/ Hex Artifact Content
Login

Artifact a22cf9eff51e65ec5aa39b1efb5b7952d800ac06:


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 34 20 32 30 30 32  .tcl,v 1.34 2002
0060: 2f 30 35 2f 31 35 20 30 38 3a 33 30 3a 31 35 20  /05/15 08:30:15 
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 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45  .}..Section {CRE
3230: 41 54 45 20 56 49 45 57 7d 20 7b 63 72 65 61 74  ATE VIEW} {creat
3240: 65 76 69 65 77 7d 0a 0a 53 79 6e 74 61 78 20 7b  eview}..Syntax {
3250: 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43  sql-command} {.C
3260: 52 45 41 54 45 20 56 49 45 57 20 3c 76 69 65 77  REATE VIEW <view
3270: 2d 6e 61 6d 65 3e 20 41 53 20 3c 73 65 6c 65 63  -name> AS <selec
3280: 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a  t-statement>.}..
3290: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52  puts {.<p>The CR
32a0: 45 41 54 45 20 56 49 45 57 20 63 6f 6d 6d 61 6e  EATE VIEW comman
32b0: 64 20 61 73 73 69 67 6e 73 20 61 20 6e 61 6d 65  d assigns a name
32c0: 20 74 6f 20 61 20 70 72 65 2d 70 61 63 6b 61 67   to a pre-packag
32d0: 65 64 20 53 45 4c 45 43 54 0a 73 74 61 74 65 6d  ed SELECT.statem
32e0: 65 6e 74 2e 20 20 4f 6e 63 65 20 74 68 65 20 76  ent.  Once the v
32f0: 69 65 77 20 69 73 20 63 72 65 61 74 65 64 2c 20  iew is created, 
3300: 69 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 69  it can be used i
3310: 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c 61 75 73  n the FROM claus
3320: 65 0a 6f 66 20 61 6e 6f 74 68 65 72 20 53 45 4c  e.of another SEL
3330: 45 43 54 20 69 6e 20 70 6c 61 63 65 20 6f 66 20  ECT in place of 
3340: 61 20 74 61 62 6c 65 20 6e 61 6d 65 2e 0a 3c 2f  a table name..</
3350: 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e 6f  p>..<p>You canno
3360: 74 20 43 4f 50 59 2c 20 49 4e 53 45 52 54 20 6f  t COPY, INSERT o
3370: 72 20 55 50 44 41 54 45 20 61 20 76 69 65 77 2e  r UPDATE a view.
3380: 20 20 56 69 65 77 73 20 61 72 65 20 72 65 61 64    Views are read
3390: 2d 6f 6e 6c 79 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65  -only.</p>.}..Se
33a0: 63 74 69 6f 6e 20 44 45 4c 45 54 45 20 64 65 6c  ction DELETE del
33b0: 65 74 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ete..Syntax {sql
33c0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44 45  -statement} {.DE
33d0: 4c 45 54 45 20 46 52 4f 4d 20 3c 74 61 62 6c 65  LETE FROM <table
33e0: 2d 6e 61 6d 65 3e 20 5b 57 48 45 52 45 20 3c 65  -name> [WHERE <e
33f0: 78 70 72 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a  xpr>].}..puts {.
3400: 3c 70 3e 54 68 65 20 44 45 4c 45 54 45 20 63 6f  <p>The DELETE co
3410: 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f  mmand is used to
3420: 20 72 65 6d 6f 76 65 20 72 65 63 6f 72 64 73 20   remove records 
3430: 66 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 54 68  from a table..Th
3440: 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69 73  e command consis
3450: 74 73 20 6f 66 20 74 68 65 20 22 44 45 4c 45 54  ts of the "DELET
3460: 45 20 46 52 4f 4d 22 20 6b 65 79 77 6f 72 64 73  E FROM" keywords
3470: 20 66 6f 6c 6c 6f 77 65 64 20 62 79 0a 74 68 65   followed by.the
3480: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61 62   name of the tab
3490: 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 72 65  le from which re
34a0: 63 6f 72 64 73 20 61 72 65 20 74 6f 20 62 65 20  cords are to be 
34b0: 72 65 6d 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c  removed..</p>..<
34c0: 70 3e 57 69 74 68 6f 75 74 20 61 20 57 48 45 52  p>Without a WHER
34d0: 45 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20 72 6f  E clause, all ro
34e0: 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  ws of the table 
34f0: 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 49 66 20  are removed..If 
3500: 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 69  a WHERE clause i
3510: 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 6e  s supplied, then
3520: 20 6f 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77 73   only those rows
3530: 20 74 68 61 74 20 6d 61 74 63 68 0a 74 68 65 20   that match.the 
3540: 65 78 70 72 65 73 73 69 6f 6e 20 61 72 65 20 72  expression are r
3550: 65 6d 6f 76 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a  emoved.</p>.}...
3560: 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e  Section {DROP IN
3570: 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 0a 0a  DEX} dropindex..
3580: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d  Syntax {sql-comm
3590: 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 49 4e 44 45  and} {.DROP INDE
35a0: 58 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e 0a 7d  X <index-name>.}
35b0: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
35c0: 44 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74 65  DROP INDEX state
35d0: 6d 65 6e 74 20 63 6f 6e 73 69 73 74 73 20 6f 66  ment consists of
35e0: 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22 44   the keywords "D
35f0: 52 4f 50 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f  ROP INDEX" follo
3600: 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20  wed.by the name 
3610: 6f 66 20 74 68 65 20 69 6e 64 65 78 2e 20 20 54  of the index.  T
3620: 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 64 20 69  he index named i
3630: 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d  s completely rem
3640: 6f 76 65 64 20 66 72 6f 6d 0a 74 68 65 20 64 69  oved from.the di
3650: 73 6b 2e 20 20 54 68 65 20 6f 6e 6c 79 20 77 61  sk.  The only wa
3660: 79 20 74 6f 20 72 65 63 6f 76 65 72 20 74 68 65  y to recover the
3670: 20 69 6e 64 65 78 20 69 73 20 74 6f 20 72 65 65   index is to ree
3680: 6e 74 65 72 20 74 68 65 0a 61 70 70 72 6f 70 72  nter the.appropr
3690: 69 61 74 65 20 43 52 45 41 54 45 20 49 4e 44 45  iate CREATE INDE
36a0: 58 20 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d  X command.</p>.}
36b0: 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20  ..Section {DROP 
36c0: 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65  TABLE} droptable
36d0: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f  ..Syntax {sql-co
36e0: 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 54 41  mmand} {.DROP TA
36f0: 42 4c 45 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  BLE <table-name>
3700: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
3710: 65 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74 61  e DROP TABLE sta
3720: 74 65 6d 65 6e 74 20 63 6f 6e 73 69 73 74 73 20  tement consists 
3730: 6f 66 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20  of the keywords 
3740: 22 44 52 4f 50 20 54 41 42 4c 45 22 20 66 6f 6c  "DROP TABLE" fol
3750: 6c 6f 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d  lowed.by the nam
3760: 65 20 6f 66 20 74 68 65 20 74 61 62 6c 65 2e 20  e of the table. 
3770: 20 54 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 64   The table named
3780: 20 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72   is completely r
3790: 65 6d 6f 76 65 64 20 66 72 6f 6d 0a 74 68 65 20  emoved from.the 
37a0: 64 69 73 6b 2e 20 20 54 68 65 20 74 61 62 6c 65  disk.  The table
37b0: 20 63 61 6e 20 6e 6f 74 20 62 65 20 72 65 63 6f   can not be reco
37c0: 76 65 72 65 64 2e 20 20 41 6c 6c 20 69 6e 64 69  vered.  All indi
37d0: 63 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  ces associated w
37e0: 69 74 68 0a 74 68 65 20 74 61 62 6c 65 20 61 72  ith.the table ar
37f0: 65 20 61 6c 73 6f 20 64 65 6c 65 74 65 64 2e 3c  e also deleted.<
3800: 2f 70 3e 7d 0a 0a 53 65 63 74 69 6f 6e 20 7b 44  /p>}..Section {D
3810: 52 4f 50 20 56 49 45 57 7d 20 64 72 6f 70 76 69  ROP VIEW} dropvi
3820: 65 77 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ew..Syntax {sql-
3830: 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20  command} {.DROP 
3840: 56 49 45 57 20 3c 76 69 65 77 2d 6e 61 6d 65 3e  VIEW <view-name>
3850: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
3860: 65 20 44 52 4f 50 20 56 49 45 57 20 73 74 61 74  e DROP VIEW stat
3870: 65 6d 65 6e 74 20 63 6f 6e 73 69 73 74 73 20 6f  ement consists o
3880: 66 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22  f the keywords "
3890: 44 52 4f 50 20 54 41 42 4c 45 22 20 66 6f 6c 6c  DROP TABLE" foll
38a0: 6f 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65  owed.by the name
38b0: 20 6f 66 20 74 68 65 20 76 69 65 77 2e 20 20 54   of the view.  T
38c0: 68 65 20 76 69 65 77 20 6e 61 6d 65 64 20 69 73  he view named is
38d0: 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68   removed from th
38e0: 65 20 64 61 74 61 62 61 73 65 2e 0a 42 75 74 20  e database..But 
38f0: 6e 6f 20 61 63 74 75 61 6c 20 64 61 74 61 20 69  no actual data i
3900: 73 20 6d 6f 64 69 66 69 65 64 2e 3c 2f 70 3e 7d  s modified.</p>}
3910: 0a 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c 41 49  ..Section EXPLAI
3920: 4e 20 65 78 70 6c 61 69 6e 0a 0a 53 79 6e 74 61  N explain..Synta
3930: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
3940: 7d 20 7b 0a 45 58 50 4c 41 49 4e 20 3c 73 71 6c  } {.EXPLAIN <sql
3950: 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70  -statement>.}..p
3960: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 45 58 50  uts {.<p>The EXP
3970: 4c 41 49 4e 20 63 6f 6d 6d 61 6e 64 20 6d 6f 64  LAIN command mod
3980: 69 66 69 65 72 20 69 73 20 61 20 6e 6f 6e 2d 73  ifier is a non-s
3990: 74 61 6e 64 61 72 64 20 65 78 74 65 6e 73 69 6f  tandard extensio
39a0: 6e 2e 20 20 54 68 65 0a 69 64 65 61 20 63 6f 6d  n.  The.idea com
39b0: 65 73 20 66 72 6f 6d 20 61 20 73 69 6d 69 6c 61  es from a simila
39c0: 72 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20  r command found 
39d0: 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2c 20 62  in PostgreSQL, b
39e0: 75 74 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e  ut the operation
39f0: 0a 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 64  .is completely d
3a00: 69 66 66 65 72 65 6e 74 2e 3c 2f 70 3e 0a 0a 3c  ifferent.</p>..<
3a10: 70 3e 49 66 20 74 68 65 20 45 58 50 4c 41 49 4e  p>If the EXPLAIN
3a20: 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61 72 73   keyword appears
3a30: 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74 68 65   before any othe
3a40: 72 20 53 51 4c 69 74 65 20 53 51 4c 20 63 6f 6d  r SQLite SQL com
3a50: 6d 61 6e 64 0a 74 68 65 6e 20 69 6e 73 74 65 61  mand.then instea
3a60: 64 20 6f 66 20 61 63 74 75 61 6c 6c 79 20 65 78  d of actually ex
3a70: 65 63 75 74 69 6e 67 20 74 68 65 20 63 6f 6d 6d  ecuting the comm
3a80: 61 6e 64 2c 20 74 68 65 20 53 51 4c 69 74 65 20  and, the SQLite 
3a90: 6c 69 62 72 61 72 79 20 77 69 6c 6c 0a 72 65 70  library will.rep
3aa0: 6f 72 74 20 62 61 63 6b 20 74 68 65 20 73 65 71  ort back the seq
3ab0: 75 65 6e 63 65 20 6f 66 20 76 69 72 74 75 61 6c  uence of virtual
3ac0: 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72 75 63   machine instruc
3ad0: 74 69 6f 6e 73 20 69 74 20 77 6f 75 6c 64 20 68  tions it would h
3ae0: 61 76 65 0a 75 73 65 64 20 74 6f 20 65 78 65 63  ave.used to exec
3af0: 75 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20  ute the command 
3b00: 68 61 64 20 74 68 65 20 45 58 50 4c 41 49 4e 20  had the EXPLAIN 
3b10: 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62 65 65 6e  keyword not been
3b20: 20 70 72 65 73 65 6e 74 2e 0a 46 6f 72 20 61 64   present..For ad
3b30: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
3b40: 74 69 6f 6e 20 61 62 6f 75 74 20 76 69 72 74 75  tion about virtu
3b50: 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72  al machine instr
3b60: 75 63 74 69 6f 6e 73 20 73 65 65 0a 74 68 65 20  uctions see.the 
3b70: 3c 61 20 68 72 65 66 3d 22 61 72 63 68 2e 68 74  <a href="arch.ht
3b80: 6d 6c 22 3e 61 72 63 68 69 74 65 63 74 75 72 65  ml">architecture
3b90: 20 64 65 73 63 72 69 70 74 69 6f 6e 3c 2f 61 3e   description</a>
3ba0: 20 6f 72 20 74 68 65 20 64 6f 63 75 6d 65 6e 74   or the document
3bb0: 61 74 69 6f 6e 0a 6f 6e 20 3c 61 20 68 72 65 66  ation.on <a href
3bc0: 3d 22 6f 70 63 6f 64 65 2e 68 74 6d 6c 22 3e 61  ="opcode.html">a
3bd0: 76 61 69 6c 61 62 6c 65 20 6f 70 63 6f 64 65 73  vailable opcodes
3be0: 3c 2f 61 3e 20 66 6f 72 20 74 68 65 20 76 69 72  </a> for the vir
3bf0: 74 75 61 6c 20 6d 61 63 68 69 6e 65 2e 3c 2f 70  tual machine.</p
3c00: 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20 65 78 70  >.}..Section exp
3c10: 72 65 73 73 69 6f 6e 20 65 78 70 72 0a 0a 53 79  ression expr..Sy
3c20: 6e 74 61 78 20 7b 65 78 70 72 7d 20 7b 0a 3c 65  ntax {expr} {.<e
3c30: 78 70 72 3e 20 3c 62 69 6e 61 72 79 2d 6f 70 3e  xpr> <binary-op>
3c40: 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70 72 3e   <expr> |.<expr>
3c50: 20 3c 6c 69 6b 65 2d 6f 70 3e 20 3c 65 78 70 72   <like-op> <expr
3c60: 3e 20 7c 0a 3c 75 6e 61 72 79 2d 6f 70 3e 20 3c  > |.<unary-op> <
3c70: 65 78 70 72 3e 20 7c 0a 28 20 3c 65 78 70 72 3e  expr> |.( <expr>
3c80: 20 29 20 7c 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d   ) |.<column-nam
3c90: 65 3e 20 7c 0a 3c 74 61 62 6c 65 2d 6e 61 6d 65  e> |.<table-name
3ca0: 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  > . <column-name
3cb0: 3e 20 7c 0a 3c 6c 69 74 65 72 61 6c 2d 76 61 6c  > |.<literal-val
3cc0: 75 65 3e 20 7c 0a 3c 66 75 6e 63 74 69 6f 6e 2d  ue> |.<function-
3cd0: 6e 61 6d 65 3e 20 28 20 3c 65 78 70 72 2d 6c 69  name> ( <expr-li
3ce0: 73 74 3e 20 7c 20 53 54 41 52 20 29 20 7c 0a 3c  st> | STAR ) |.<
3cf0: 65 78 70 72 3e 20 49 53 4e 55 4c 4c 20 7c 0a 3c  expr> ISNULL |.<
3d00: 65 78 70 72 3e 20 4e 4f 54 4e 55 4c 4c 20 7c 0a  expr> NOTNULL |.
3d10: 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 42 45 54  <expr> [NOT] BET
3d20: 57 45 45 4e 20 3c 65 78 70 72 3e 20 41 4e 44 20  WEEN <expr> AND 
3d30: 3c 65 78 70 72 3e 20 7c 0a 3c 65 78 70 72 3e 20  <expr> |.<expr> 
3d40: 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 76 61 6c 75  [NOT] IN ( <valu
3d50: 65 2d 6c 69 73 74 3e 20 29 20 7c 0a 3c 65 78 70  e-list> ) |.<exp
3d60: 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c 73  r> [NOT] IN ( <s
3d70: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
3d80: 20 29 20 7c 0a 28 20 3c 73 65 6c 65 63 74 2d 73   ) |.( <select-s
3d90: 74 61 74 65 6d 65 6e 74 3e 20 29 20 7c 0a 43 41  tatement> ) |.CA
3da0: 53 45 20 5b 3c 65 78 70 72 3e 5d 20 28 20 57 48  SE [<expr>] ( WH
3db0: 45 4e 20 3c 65 78 70 72 3e 20 54 48 45 4e 20 3c  EN <expr> THEN <
3dc0: 65 78 70 72 3e 20 29 2b 20 5b 45 4c 53 45 20 3c  expr> )+ [ELSE <
3dd0: 65 78 70 72 3e 5d 20 45 4e 44 0a 7d 20 7b 6c 69  expr>] END.} {li
3de0: 6b 65 2d 6f 70 7d 20 7b 0a 4c 49 4b 45 20 7c 20  ke-op} {.LIKE | 
3df0: 47 4c 4f 42 20 7c 20 4e 4f 54 20 4c 49 4b 45 20  GLOB | NOT LIKE 
3e00: 7c 20 4e 4f 54 20 47 4c 4f 42 0a 7d 0a 0a 70 75  | NOT GLOB.}..pu
3e10: 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73 65 63  ts {.<p>This sec
3e20: 74 69 6f 6e 20 69 73 20 64 69 66 66 65 72 65 6e  tion is differen
3e30: 74 20 66 72 6f 6d 20 74 68 65 20 6f 74 68 65 72  t from the other
3e40: 73 2e 20 20 4d 6f 73 74 20 6f 74 68 65 72 20 73  s.  Most other s
3e50: 65 63 74 69 6f 6e 73 20 6f 66 0a 74 68 69 73 20  ections of.this 
3e60: 64 6f 63 75 6d 65 6e 74 20 74 61 6c 6b 73 20 61  document talks a
3e70: 62 6f 75 74 20 61 20 70 61 72 74 69 63 75 6c 61  bout a particula
3e80: 72 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20  r SQL command.  
3e90: 54 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f 65  This section doe
3ea0: 73 0a 6e 6f 74 20 74 61 6c 6b 20 61 62 6f 75 74  s.not talk about
3eb0: 20 61 20 73 74 61 6e 64 61 6c 6f 6e 65 20 63 6f   a standalone co
3ec0: 6d 6d 61 6e 64 20 62 75 74 20 61 62 6f 75 74 20  mmand but about 
3ed0: 22 65 78 70 72 65 73 73 69 6f 6e 73 22 20 77 68  "expressions" wh
3ee0: 69 63 68 20 61 72 65 20 0a 73 75 62 63 6f 6d 70  ich are .subcomp
3ef0: 6f 6e 65 6e 74 20 6f 66 20 6d 6f 73 74 20 6f 74  onent of most ot
3f00: 68 65 72 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70  her commands.</p
3f10: 3e 0a 0a 3c 70 3e 53 51 4c 69 74 65 20 75 6e 64  >..<p>SQLite und
3f20: 65 72 73 74 61 6e 64 73 20 74 68 65 20 66 6f 6c  erstands the fol
3f30: 6c 6f 77 69 6e 67 20 62 69 6e 61 72 79 20 6f 70  lowing binary op
3f40: 65 72 61 74 6f 72 73 2c 20 69 6e 20 6f 72 64 65  erators, in orde
3f50: 72 20 66 72 6f 6d 0a 68 69 67 68 65 73 74 20 74  r from.highest t
3f60: 6f 20 6c 6f 77 65 73 74 20 70 72 65 63 65 64 65  o lowest precede
3f70: 6e 63 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b  nce:</p>..<block
3f80: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e  quote><pre>.<fon
3f90: 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30  t color="#2c2cf0
3fa0: 22 3e 3c 62 69 67 3e 2a 20 20 20 20 2f 20 20 20  "><big>*    /   
3fb0: 20 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c   %.+    -.&lt;&l
3fc0: 74 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20  t;   &gt;&gt;   
3fd0: 26 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20  &amp;    |.&lt; 
3fe0: 20 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20     &lt;=   &gt; 
3ff0: 20 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d     &gt;=.=    ==
4000: 20 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b     !=   &lt;&gt;
4010: 20 20 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44 0a     </big>IN.AND.
4020: 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e  OR</font>.</pre>
4030: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
4040: 70 3e 53 75 70 70 6f 72 74 65 64 20 75 6e 61 72  p>Supported unar
4050: 79 20 6f 70 65 72 61 74 65 72 73 20 61 72 65 20  y operaters are 
4060: 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  these:</p>..<blo
4070: 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 3c 66  ckquote><pre>.<f
4080: 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63  ont color="#2c2c
4090: 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20 20 2b 20  f0"><big>-    + 
40a0: 20 20 20 21 20 20 20 20 7e 3c 2f 62 69 67 3e 3c     !    ~</big><
40b0: 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e 3c 2f 62  /font>.</pre></b
40c0: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 70 3e 41  lockquote>..<p>A
40d0: 6e 79 20 53 51 4c 69 74 65 20 76 61 6c 75 65 20  ny SQLite value 
40e0: 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 70  can be used as p
40f0: 61 72 74 20 6f 66 20 61 6e 20 65 78 70 72 65 73  art of an expres
4100: 73 69 6f 6e 2e 20 20 0a 46 6f 72 20 61 72 69 74  sion.  .For arit
4110: 68 6d 65 74 69 63 20 6f 70 65 72 61 74 69 6f 6e  hmetic operation
4120: 73 2c 20 69 6e 74 65 67 65 72 73 20 61 72 65 20  s, integers are 
4130: 74 72 65 61 74 65 64 20 61 73 20 69 6e 74 65 67  treated as integ
4140: 65 72 73 2e 0a 53 74 72 69 6e 67 73 20 61 72 65  ers..Strings are
4150: 20 66 69 72 73 74 20 63 6f 6e 76 65 72 74 65 64   first converted
4160: 20 74 6f 20 72 65 61 6c 20 6e 75 6d 62 65 72 73   to real numbers
4170: 20 75 73 69 6e 67 20 3c 62 3e 61 74 6f 66 28 29   using <b>atof()
4180: 3c 2f 62 3e 2e 0a 46 6f 72 20 63 6f 6d 70 61 72  </b>..For compar
4190: 69 73 6f 6e 20 6f 70 65 72 61 74 6f 72 73 2c 20  ison operators, 
41a0: 6e 75 6d 62 65 72 73 20 63 6f 6d 70 61 72 65 20  numbers compare 
41b0: 61 73 20 6e 75 6d 62 65 72 73 20 61 6e 64 20 73  as numbers and s
41c0: 74 72 69 6e 67 73 0a 63 6f 6d 70 61 72 65 20 61  trings.compare a
41d0: 73 20 73 74 72 69 6e 67 73 2e 20 20 46 6f 72 20  s strings.  For 
41e0: 73 74 72 69 6e 67 20 63 6f 6d 70 61 72 69 73 6f  string compariso
41f0: 6e 73 2c 20 63 61 73 65 20 69 73 20 73 69 67 6e  ns, case is sign
4200: 69 66 69 63 61 6e 74 0a 62 75 74 20 69 73 20 6f  ificant.but is o
4210: 6e 6c 79 20 75 73 65 64 20 74 6f 20 62 72 65 61  nly used to brea
4220: 6b 20 61 20 74 69 65 2e 0a 4e 6f 74 65 20 74 68  k a tie..Note th
4230: 61 74 20 74 68 65 72 65 20 61 72 65 20 74 77 6f  at there are two
4240: 20 76 61 72 69 61 74 69 6f 6e 73 20 6f 66 20 74   variations of t
4250: 68 65 20 65 71 75 61 6c 73 20 61 6e 64 20 6e 6f  he equals and no
4260: 74 20 65 71 75 61 6c 73 0a 6f 70 65 72 61 74 6f  t equals.operato
4270: 72 73 2e 20 20 45 71 75 61 6c 73 20 63 61 6e 20  rs.  Equals can 
4280: 62 65 20 65 69 74 68 65 72 7d 0a 70 75 74 73 20  be either}.puts 
4290: 22 5b 4f 70 65 72 61 74 6f 72 20 3d 5d 20 6f 72  "[Operator =] or
42a0: 20 5b 4f 70 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a   [Operator ==]..
42b0: 54 68 65 20 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f  The non-equals o
42c0: 70 65 72 61 74 6f 72 20 63 61 6e 20 62 65 20 65  perator can be e
42d0: 69 74 68 65 72 0a 5b 4f 70 65 72 61 74 6f 72 20  ither.[Operator 
42e0: 21 3d 5d 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72  !=] or [Operator
42f0: 20 7b 26 6c 74 3b 26 67 74 3b 7d 5d 2e 3c 2f 70   {&lt;&gt;}].</p
4300: 3e 22 0a 70 75 74 73 20 7b 0a 0a 3c 70 3e 54 68  >".puts {..<p>Th
4310: 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72 20  e LIKE operator 
4320: 64 6f 65 73 20 61 20 77 69 6c 64 63 61 72 64 20  does a wildcard 
4330: 63 6f 6d 70 61 72 69 73 69 6f 6e 2e 20 20 54 68  comparision.  Th
4340: 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20 74 68 65  e operand.to the
4350: 20 72 69 67 68 74 20 63 6f 6e 74 61 69 6e 73 20   right contains 
4360: 74 68 65 20 77 69 6c 64 63 61 72 64 73 2e 7d 0a  the wildcards.}.
4370: 70 75 74 73 20 22 41 20 70 65 72 63 65 6e 74 20  puts "A percent 
4380: 73 79 6d 62 6f 6c 20 5b 4f 70 65 72 61 74 6f 72  symbol [Operator
4390: 20 25 5d 20 69 6e 20 74 68 65 20 72 69 67 68 74   %] in the right
43a0: 20 6f 70 65 72 61 6e 64 0a 6d 61 74 63 68 65 73   operand.matches
43b0: 20 61 6e 79 20 73 65 71 75 65 6e 63 65 20 6f 66   any sequence of
43c0: 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65 20 63 68   zero or more ch
43d0: 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65 20  aracters on the 
43e0: 6c 65 66 74 2e 0a 41 6e 20 75 6e 64 65 72 73 63  left..An undersc
43f0: 6f 72 65 20 5b 4f 70 65 72 61 74 6f 72 20 5f 5d  ore [Operator _]
4400: 20 6f 6e 20 74 68 65 20 72 69 67 68 74 0a 6d 61   on the right.ma
4410: 74 63 68 65 73 20 61 6e 79 20 73 69 6e 67 6c 65  tches any single
4420: 20 63 68 61 72 61 63 74 65 72 20 6f 6e 20 74 68   character on th
4430: 65 20 6c 65 66 74 2e 22 0a 70 75 74 73 20 7b 54  e left.".puts {T
4440: 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74 6f 72  he LIKE operator
4450: 20 69 73 0a 6e 6f 74 20 63 61 73 65 20 73 65 6e   is.not case sen
4460: 73 69 74 69 76 65 20 61 6e 64 20 77 69 6c 6c 20  sitive and will 
4470: 6d 61 74 63 68 20 75 70 70 65 72 20 63 61 73 65  match upper case
4480: 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20 6f   characters on o
4490: 6e 65 0a 73 69 64 65 20 61 67 61 69 6e 73 74 20  ne.side against 
44a0: 6c 6f 77 65 72 20 63 61 73 65 20 63 68 61 72 61  lower case chara
44b0: 63 74 65 72 73 20 6f 6e 20 74 68 65 20 6f 74 68  cters on the oth
44c0: 65 72 2e 0a 28 41 20 62 75 67 3a 20 53 51 4c 69  er..(A bug: SQLi
44d0: 74 65 20 6f 6e 6c 79 20 75 6e 64 65 72 73 74 61  te only understa
44e0: 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77 65 72 20  nds upper/lower 
44f0: 63 61 73 65 20 66 6f 72 20 37 2d 62 69 74 20 4c  case for 7-bit L
4500: 61 74 69 6e 0a 63 68 61 72 61 63 74 65 72 73 2e  atin.characters.
4510: 20 20 48 65 6e 63 65 20 74 68 65 20 4c 49 4b 45    Hence the LIKE
4520: 20 6f 70 65 72 61 74 6f 72 20 69 73 20 63 61 73   operator is cas
4530: 65 20 73 65 6e 73 69 74 69 76 65 20 66 6f 72 0a  e sensitive for.
4540: 38 2d 62 69 74 20 69 73 6f 38 38 35 39 20 63 68  8-bit iso8859 ch
4550: 61 72 61 63 74 65 72 73 20 6f 72 20 55 54 46 2d  aracters or UTF-
4560: 38 20 63 68 61 72 61 63 74 65 72 73 2e 20 20 46  8 characters.  F
4570: 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 74 68 65 20  or example,.the 
4580: 65 78 70 72 65 73 73 69 6f 6e 20 3c 62 3e 27 61  expression <b>'a
4590: 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70  '&nbsp;LIKE&nbsp
45a0: 3b 27 41 27 3c 2f 62 3e 20 69 73 20 54 52 55 45  ;'A'</b> is TRUE
45b0: 20 62 75 74 0a 3c 62 3e 27 26 61 65 6c 69 67 3b   but.<b>'&aelig;
45c0: 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e 62 73 70  '&nbsp;LIKE&nbsp
45d0: 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62 3e 20 69  ;'&AElig;'</b> i
45e0: 73 20 46 41 4c 53 45 2e 29 0a 3c 2f 70 3e 0a 0a  s FALSE.).</p>..
45f0: 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f 70 65 72  <p>The GLOB oper
4600: 61 74 6f 72 20 69 73 20 73 69 6d 69 6c 61 72 20  ator is similar 
4610: 74 6f 20 4c 49 4b 45 20 62 75 74 20 75 73 65 73  to LIKE but uses
4620: 20 74 68 65 20 55 6e 69 78 0a 66 69 6c 65 20 67   the Unix.file g
4630: 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61 78 20 66  lobbing syntax f
4640: 6f 72 20 69 74 73 20 77 69 6c 64 63 61 72 64 73  or its wildcards
4650: 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42 20 69 73  .  Also, GLOB is
4660: 20 63 61 73 65 0a 73 65 6e 73 69 74 69 76 65 2c   case.sensitive,
4670: 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e 20 20 42   unlike LIKE.  B
4680: 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20 4c 49 4b  oth GLOB and LIK
4690: 45 20 6d 61 79 20 62 65 20 70 72 65 63 65 64 65  E may be precede
46a0: 64 20 62 79 0a 74 68 65 20 4e 4f 54 20 6b 65 79  d by.the NOT key
46b0: 77 6f 72 64 20 74 6f 20 69 6e 76 65 72 74 20 74  word to invert t
46c0: 68 65 20 73 65 6e 73 65 20 6f 66 20 74 68 65 20  he sense of the 
46d0: 74 65 73 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20  test.</p>..<p>A 
46e0: 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20  column name can 
46f0: 62 65 20 61 6e 79 20 6f 66 20 74 68 65 20 6e 61  be any of the na
4700: 6d 65 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74  mes defined in t
4710: 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 0a  he CREATE TABLE.
4720: 73 74 61 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65  statement or one
4730: 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e   of the followin
4740: 67 20 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69  g special identi
4750: 66 69 65 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44  fiers: "<b>ROWID
4760: 3c 2f 62 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f  </b>",."<b>OID</
4770: 62 3e 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57  b>", or "<b>_ROW
4780: 49 44 5f 3c 2f 62 3e 22 2e 0a 54 68 65 73 65 20  ID_</b>"..These 
4790: 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69  special identifi
47a0: 65 72 73 20 61 6c 6c 20 64 65 73 63 72 69 62 65  ers all describe
47b0: 20 74 68 65 0a 75 6e 69 71 75 65 20 72 61 6e 64   the.unique rand
47c0: 6f 6d 20 69 6e 74 65 67 65 72 20 6b 65 79 20 28  om integer key (
47d0: 74 68 65 20 22 72 6f 77 20 6b 65 79 22 29 20 61  the "row key") a
47e0: 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 65  ssociated with e
47f0: 76 65 72 79 20 0a 72 6f 77 20 6f 66 20 65 76 65  very .row of eve
4800: 72 79 20 74 61 62 6c 65 2e 0a 54 68 65 20 73 70  ry table..The sp
4810: 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72  ecial identifier
4820: 73 20 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f 20  s only refer to 
4830: 74 68 65 20 72 6f 77 20 6b 65 79 20 69 66 20 74  the row key if t
4840: 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 0a  he CREATE TABLE.
4850: 73 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e  statement does n
4860: 6f 74 20 64 65 66 69 6e 65 20 61 20 72 65 61 6c  ot define a real
4870: 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68 65   column with the
4880: 20 73 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f 77   same name.  Row
4890: 20 6b 65 79 73 0a 61 63 74 20 6c 69 6b 65 20 72   keys.act like r
48a0: 65 61 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 73  ead-only columns
48b0: 2e 20 20 41 20 72 6f 77 20 6b 65 79 20 63 61 6e  .  A row key can
48c0: 20 62 65 20 75 73 65 64 20 61 6e 79 77 68 65 72   be used anywher
48d0: 65 20 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75  e a regular.colu
48e0: 6d 6e 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20  mn can be used, 
48f0: 65 78 63 65 70 74 20 74 68 61 74 20 79 6f 75 20  except that you 
4900: 63 61 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74 68  cannot change th
4910: 65 20 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f 77  e value.of a row
4920: 20 6b 65 79 20 69 6e 20 61 6e 20 55 50 44 41 54   key in an UPDAT
4930: 45 20 6f 72 20 49 4e 53 45 52 54 20 73 74 61 74  E or INSERT stat
4940: 65 6d 65 6e 74 2e 0a 22 53 45 4c 45 43 54 20 2a  ement.."SELECT *
4950: 20 2e 2e 2e 22 20 64 6f 65 73 20 6e 6f 74 20 72   ..." does not r
4960: 65 74 75 72 6e 20 74 68 65 20 72 6f 77 20 6b 65  eturn the row ke
4970: 79 2e 3c 2f 70 3e 0a 0a 3c 70 3e 53 45 4c 45 43  y.</p>..<p>SELEC
4980: 54 20 73 74 61 74 65 6d 65 6e 74 73 20 63 61 6e  T statements can
4990: 20 61 70 70 65 61 72 20 69 6e 20 65 78 70 72 65   appear in expre
49a0: 73 73 69 6f 6e 73 20 61 73 20 65 69 74 68 65 72  ssions as either
49b0: 20 74 68 65 0a 72 69 67 68 74 2d 68 61 6e 64 20   the.right-hand 
49c0: 6f 70 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49  operand of the I
49d0: 4e 20 6f 70 65 72 61 74 6f 72 20 6f 72 20 61 73  N operator or as
49e0: 20 61 20 73 63 61 6c 61 72 20 71 75 61 6e 74 69   a scalar quanti
49f0: 74 79 2e 0a 49 6e 20 62 6f 74 68 20 63 61 73 65  ty..In both case
4a00: 73 2c 20 74 68 65 20 53 45 4c 45 43 54 20 73 68  s, the SELECT sh
4a10: 6f 75 6c 64 20 68 61 76 65 20 6f 6e 6c 79 20 61  ould have only a
4a20: 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 20 69   single column i
4a30: 6e 20 69 74 73 0a 72 65 73 75 6c 74 2e 20 20 43  n its.result.  C
4a40: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 73 20  ompound SELECTs 
4a50: 28 63 6f 6e 6e 65 63 74 65 64 20 77 69 74 68 20  (connected with 
4a60: 6b 65 79 77 6f 72 64 73 20 6c 69 6b 65 20 55 4e  keywords like UN
4a70: 49 4f 4e 20 6f 72 0a 45 58 43 45 50 54 29 20 61  ION or.EXCEPT) a
4a80: 72 65 20 61 6c 6c 6f 77 65 64 2e 20 20 41 6e 79  re allowed.  Any
4a90: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
4aa0: 20 6f 6e 20 74 68 65 20 73 65 6c 65 63 74 20 69   on the select i
4ab0: 73 20 69 67 6e 6f 72 65 64 2e 0a 41 20 53 45 4c  s ignored..A SEL
4ac0: 45 43 54 20 69 6e 20 61 6e 20 65 78 70 72 65 73  ECT in an expres
4ad0: 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65  sion is evaluate
4ae0: 64 20 6f 6e 63 65 20 62 65 66 6f 72 65 20 61 6e  d once before an
4af0: 79 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73 69  y other processi
4b00: 6e 67 0a 69 73 20 70 65 72 66 6f 72 6d 65 64 2c  ng.is performed,
4b10: 20 73 6f 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20   so none of the 
4b20: 65 78 70 72 65 73 73 69 6f 6e 73 20 77 69 74 68  expressions with
4b30: 69 6e 20 74 68 65 20 73 65 6c 65 63 74 20 69 74  in the select it
4b40: 73 65 6c 66 20 63 61 6e 0a 72 65 66 65 72 20 74  self can.refer t
4b50: 6f 20 71 75 61 6e 74 69 74 69 65 73 20 69 6e 20  o quantities in 
4b60: 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 65  the containing e
4b70: 78 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 3e 0a 0a  xpression.</p>..
4b80: 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54  <p>When a SELECT
4b90: 20 69 73 20 74 68 65 20 72 69 67 68 74 20 6f 70   is the right op
4ba0: 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20  erand of the IN 
4bb0: 6f 70 65 72 61 74 6f 72 2c 20 74 68 65 20 49 4e  operator, the IN
4bc0: 0a 6f 70 65 72 61 74 6f 72 20 72 65 74 75 72 6e  .operator return
4bd0: 73 20 54 52 55 45 20 69 66 20 74 68 65 20 72 65  s TRUE if the re
4be0: 73 75 6c 74 20 6f 66 20 74 68 65 20 6c 65 66 74  sult of the left
4bf0: 20 6f 70 65 72 61 6e 64 20 69 73 20 61 6e 79 20   operand is any 
4c00: 6f 66 0a 74 68 65 20 76 61 6c 75 65 73 20 67 65  of.the values ge
4c10: 6e 65 72 61 74 65 64 20 62 79 20 74 68 65 20 73  nerated by the s
4c20: 65 6c 65 63 74 2e 20 20 54 68 65 20 49 4e 20 6f  elect.  The IN o
4c30: 70 65 72 61 74 6f 72 20 6d 61 79 20 62 65 20 70  perator may be p
4c40: 72 65 63 65 64 65 64 0a 62 79 20 74 68 65 20 4e  receded.by the N
4c50: 4f 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e  OT keyword to in
4c60: 76 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f  vert the sense o
4c70: 66 20 74 68 65 20 74 65 73 74 2e 3c 2f 70 3e 0a  f the test.</p>.
4c80: 0a 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43  .<p>When a SELEC
4c90: 54 20 61 70 70 65 61 72 73 20 77 69 74 68 69 6e  T appears within
4ca0: 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 62   an expression b
4cb0: 75 74 20 69 73 20 6e 6f 74 20 74 68 65 20 72 69  ut is not the ri
4cc0: 67 68 74 0a 6f 70 65 72 61 6e 64 20 6f 66 20 61  ght.operand of a
4cd0: 6e 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20 74  n IN operator, t
4ce0: 68 65 6e 20 74 68 65 20 66 69 72 73 74 20 72 6f  hen the first ro
4cf0: 77 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20  w of the result 
4d00: 6f 66 20 74 68 65 0a 53 45 4c 45 43 54 20 62 65  of the.SELECT be
4d10: 63 6f 6d 65 73 20 74 68 65 20 76 61 6c 75 65 20  comes the value 
4d20: 75 73 65 64 20 69 6e 20 74 68 65 20 65 78 70 72  used in the expr
4d30: 65 73 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20  ession.  If the 
4d40: 53 45 4c 45 43 54 20 79 69 65 6c 64 73 0a 6d 6f  SELECT yields.mo
4d50: 72 65 20 74 68 61 6e 20 6f 6e 65 20 72 65 73 75  re than one resu
4d60: 6c 74 20 72 6f 77 2c 20 61 6c 6c 20 72 6f 77 73  lt row, all rows
4d70: 20 61 66 74 65 72 20 74 68 65 20 66 69 72 73 74   after the first
4d80: 20 61 72 65 20 69 67 6e 6f 72 65 64 2e 20 20 49   are ignored.  I
4d90: 66 0a 74 68 65 20 53 45 4c 45 43 54 20 79 65 69  f.the SELECT yei
4da0: 6c 64 73 20 6e 6f 20 72 6f 77 73 2c 20 74 68 65  lds no rows, the
4db0: 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74  n the value of t
4dc0: 68 65 20 53 45 4c 45 43 54 20 69 73 20 4e 55 4c  he SELECT is NUL
4dd0: 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20  L.</p>..<p>Both 
4de0: 73 69 6d 70 6c 65 20 61 6e 64 20 61 67 67 72 65  simple and aggre
4df0: 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  gate functions a
4e00: 72 65 20 73 75 70 70 6f 72 74 65 64 2e 20 20 41  re supported.  A
4e10: 20 73 69 6d 70 6c 65 0a 66 75 6e 63 74 69 6f 6e   simple.function
4e20: 20 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20   can be used in 
4e30: 61 6e 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 20  any expression. 
4e40: 20 53 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e   Simple function
4e50: 73 20 72 65 74 75 72 6e 0a 61 20 72 65 73 75 6c  s return.a resul
4e60: 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 61  t immediately ba
4e70: 73 65 64 20 6f 6e 20 74 68 65 69 72 20 69 6e 70  sed on their inp
4e80: 75 74 73 2e 20 20 41 67 67 72 65 67 61 74 65 20  uts.  Aggregate 
4e90: 66 75 6e 63 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e  functions.may on
4ea0: 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 61 20  ly be used in a 
4eb0: 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74  SELECT statement
4ec0: 2e 20 20 41 67 67 72 65 67 61 74 65 20 66 75 6e  .  Aggregate fun
4ed0: 63 74 69 6f 6e 73 20 63 6f 6d 70 75 74 65 0a 74  ctions compute.t
4ee0: 68 65 69 72 20 72 65 73 75 6c 74 20 61 63 72 6f  heir result acro
4ef0: 73 73 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74  ss all rows of t
4f00: 68 65 20 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f  he result set.</
4f10: 70 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f  p>..<p>The follo
4f20: 77 69 6e 67 20 73 69 6d 70 6c 65 20 66 75 6e 63  wing simple func
4f30: 74 69 6f 6e 73 20 61 72 65 20 63 75 72 72 65 6e  tions are curren
4f40: 74 6c 79 20 73 75 70 70 6f 72 74 65 64 3a 3c 2f  tly supported:</
4f50: 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65  p>..<table borde
4f60: 72 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d  r=0 cellpadding=
4f70: 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  10>.<tr>.<td val
4f80: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
4f90: 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32  "right" width=12
4fa0: 30 3e 61 62 73 28 3c 69 3e 58 3c 2f 69 3e 29 3c  0>abs(<i>X</i>)<
4fb0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
4fc0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
4fd0: 20 61 62 73 6f 6c 75 74 65 20 76 61 6c 75 65 20   absolute value 
4fe0: 6f 66 20 61 72 67 75 6d 65 6e 74 20 3c 69 3e 58  of argument <i>X
4ff0: 3c 2f 69 3e 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  </i>.</td>.</tr>
5000: 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67  ..<tr>.<td valig
5010: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
5020: 69 67 68 74 22 3e 63 6f 61 6c 65 73 63 65 28 3c  ight">coalesce(<
5030: 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e  i>X</i>,<i>Y</i>
5040: 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  ,...)</td>.<td v
5050: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
5060: 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65  rn a copy of the
5070: 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55 4c 4c 20   first non-NULL 
5080: 61 72 67 75 6d 65 6e 74 2e 20 20 49 66 0a 61 6c  argument.  If.al
5090: 6c 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  l arguments are 
50a0: 4e 55 4c 4c 20 74 68 65 6e 20 4e 55 4c 4c 20 69  NULL then NULL i
50b0: 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f 74 64 3e  s returned.</td>
50c0: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
50d0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
50e0: 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c 61 73 74  ign="right">last
50f0: 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29 3c  _insert_rowid()<
5100: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
5110: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
5120: 20 52 4f 57 49 44 20 6f 66 20 74 68 65 20 6c 61   ROWID of the la
5130: 73 74 20 72 6f 77 20 69 6e 73 65 72 74 20 66 72  st row insert fr
5140: 6f 6d 20 74 68 69 73 0a 63 6f 6e 6e 65 63 74 69  om this.connecti
5150: 6f 6e 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  on to the databa
5160: 73 65 2e 20 20 54 68 69 73 20 69 73 20 74 68 65  se.  This is the
5170: 20 73 61 6d 65 20 76 61 6c 75 65 20 74 68 61 74   same value that
5180: 20 77 6f 75 6c 64 20 62 65 20 72 65 74 75 72 6e   would be return
5190: 65 64 0a 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73  ed.from the <b>s
51a0: 71 6c 69 74 65 5f 6c 61 73 74 5f 69 6e 73 65 72  qlite_last_inser
51b0: 74 5f 72 6f 77 69 64 28 29 3c 2f 62 3e 20 41 50  t_rowid()</b> AP
51c0: 49 20 66 75 6e 63 74 69 6f 6e 2e 3c 2f 74 64 3e  I function.</td>
51d0: 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64  .</tr>..<tr>.<td
51e0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
51f0: 69 67 6e 3d 22 72 69 67 68 74 22 3e 6c 65 6e 67  ign="right">leng
5200: 74 68 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64  th(<i>X</i>)</td
5210: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
5220: 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 73 74  p">Return the st
5230: 72 69 6e 67 20 6c 65 6e 67 74 68 20 6f 66 20 3c  ring length of <
5240: 69 3e 58 3c 2f 69 3e 20 69 6e 20 63 68 61 72 61  i>X</i> in chara
5250: 63 74 65 72 73 2e 0a 49 66 20 53 51 4c 69 74 65  cters..If SQLite
5260: 20 69 73 20 63 6f 6e 66 69 67 75 72 65 64 20 74   is configured t
5270: 6f 20 73 75 70 70 6f 72 74 20 55 54 46 2d 38 2c  o support UTF-8,
5280: 20 74 68 65 6e 20 74 68 65 20 6e 75 6d 62 65 72   then the number
5290: 20 6f 66 20 55 54 46 2d 38 0a 63 68 61 72 61 63   of UTF-8.charac
52a0: 74 65 72 73 20 69 73 20 72 65 74 75 72 6e 65 64  ters is returned
52b0: 2c 20 6e 6f 74 20 74 68 65 20 6e 75 6d 62 65 72  , not the number
52c0: 20 6f 66 20 62 79 74 65 73 2e 3c 2f 74 64 3e 0a   of bytes.</td>.
52d0: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
52e0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
52f0: 67 6e 3d 22 72 69 67 68 74 22 3e 6c 6f 77 65 72  gn="right">lower
5300: 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a  (<i>X</i>)</td>.
5310: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
5320: 3e 52 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f  >Return a copy o
5330: 66 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69  f string <i>X</i
5340: 3e 20 77 69 6c 6c 20 61 6c 6c 20 63 68 61 72 61  > will all chara
5350: 63 74 65 72 73 0a 63 6f 6e 76 65 72 74 65 64 20  cters.converted 
5360: 74 6f 20 6c 6f 77 65 72 20 63 61 73 65 2e 20 20  to lower case.  
5370: 54 68 65 20 43 20 6c 69 62 72 61 72 79 20 3c 62  The C library <b
5380: 3e 74 6f 6c 6f 77 65 72 28 29 3c 2f 62 3e 20 72  >tolower()</b> r
5390: 6f 75 74 69 6e 65 20 69 73 20 75 73 65 64 0a 66  outine is used.f
53a0: 6f 72 20 74 68 65 20 63 6f 6e 76 65 72 73 69 6f  or the conversio
53b0: 6e 2c 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74  n, which means t
53c0: 68 61 74 20 74 68 69 73 20 66 75 6e 63 74 69 6f  hat this functio
53d0: 6e 20 6d 69 67 68 74 20 6e 6f 74 0a 77 6f 72 6b  n might not.work
53e0: 20 63 6f 72 72 65 63 74 6c 79 20 6f 6e 20 55 54   correctly on UT
53f0: 46 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e 3c  F-8 characters.<
5400: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
5410: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
5420: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
5430: 6d 61 78 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e  max(<i>X</i>,<i>
5440: 59 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a  Y</i>,...)</td>.
5450: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
5460: 3e 52 65 74 75 72 6e 20 74 68 65 20 61 72 67 75  >Return the argu
5470: 6d 65 6e 74 20 77 69 74 68 20 74 68 65 20 6d 61  ment with the ma
5480: 78 69 6d 75 6d 20 76 61 6c 75 65 2e 20 20 41 72  ximum value.  Ar
5490: 67 75 6d 65 6e 74 73 0a 6d 61 79 20 62 65 20 73  guments.may be s
54a0: 74 72 69 6e 67 73 20 69 6e 20 61 64 64 69 74 69  trings in additi
54b0: 6f 6e 20 74 6f 20 6e 75 6d 62 65 72 73 2e 20 20  on to numbers.  
54c0: 54 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75  The maximum valu
54d0: 65 20 69 73 20 64 65 74 65 72 6d 69 6e 65 64 0a  e is determined.
54e0: 62 79 20 74 68 65 20 75 73 75 61 6c 20 73 6f 72  by the usual sor
54f0: 74 20 6f 72 64 65 72 2e 20 20 4e 6f 74 65 20 74  t order.  Note t
5500: 68 61 74 20 3c 62 3e 6d 61 78 28 29 3c 2f 62 3e  hat <b>max()</b>
5510: 20 69 73 20 61 20 73 69 6d 70 6c 65 20 66 75 6e   is a simple fun
5520: 63 74 69 6f 6e 20 77 68 65 6e 0a 69 74 20 68 61  ction when.it ha
5530: 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67 75  s 2 or more argu
5540: 6d 65 6e 74 73 20 62 75 74 20 63 6f 6e 76 65 72  ments but conver
5550: 74 73 20 74 6f 20 61 6e 20 61 67 67 72 65 67 61  ts to an aggrega
5560: 74 65 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 67  te function if g
5570: 69 76 65 6e 0a 6f 6e 6c 79 20 61 20 73 69 6e 67  iven.only a sing
5580: 6c 65 20 61 72 67 75 6d 65 6e 74 2e 3c 2f 74 64  le argument.</td
5590: 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74  >.</tr>..<tr>.<t
55a0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
55b0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6d 69 6e  lign="right">min
55c0: 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f  (<i>X</i>,<i>Y</
55d0: 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64  i>,...)</td>.<td
55e0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
55f0: 74 75 72 6e 20 74 68 65 20 61 72 67 75 6d 65 6e  turn the argumen
5600: 74 20 77 69 74 68 20 74 68 65 20 6d 69 6e 69 6d  t with the minim
5610: 75 6d 20 76 61 6c 75 65 2e 20 20 41 72 67 75 6d  um value.  Argum
5620: 65 6e 74 73 0a 6d 61 79 20 62 65 20 73 74 72 69  ents.may be stri
5630: 6e 67 73 20 69 6e 20 61 64 64 69 74 69 6f 6e 20  ngs in addition 
5640: 74 6f 20 6e 75 6d 62 65 72 73 2e 20 20 54 68 65  to numbers.  The
5650: 20 6d 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 20   mminimum value 
5660: 69 73 20 64 65 74 65 72 6d 69 6e 65 64 0a 62 79  is determined.by
5670: 20 74 68 65 20 75 73 75 61 6c 20 73 6f 72 74 20   the usual sort 
5680: 6f 72 64 65 72 2e 20 20 4e 6f 74 65 20 74 68 61  order.  Note tha
5690: 74 20 3c 62 3e 6d 69 6e 28 29 3c 2f 62 3e 20 69  t <b>min()</b> i
56a0: 73 20 61 20 73 69 6d 70 6c 65 20 66 75 6e 63 74  s a simple funct
56b0: 69 6f 6e 20 77 68 65 6e 0a 69 74 20 68 61 73 20  ion when.it has 
56c0: 32 20 6f 72 20 6d 6f 72 65 20 61 72 67 75 6d 65  2 or more argume
56d0: 6e 74 73 20 62 75 74 20 63 6f 6e 76 65 72 74 73  nts but converts
56e0: 20 74 6f 20 61 6e 20 61 67 67 72 65 67 61 74 65   to an aggregate
56f0: 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 67 69 76   function if giv
5700: 65 6e 0a 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65  en.only a single
5710: 20 61 72 67 75 6d 65 6e 74 2e 3c 2f 74 64 3e 0a   argument.</td>.
5720: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
5730: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
5740: 67 6e 3d 22 72 69 67 68 74 22 3e 72 61 6e 64 6f  gn="right">rando
5750: 6d 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  m(*)</td>.<td va
5760: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
5770: 6e 20 61 20 72 61 6e 64 6f 6d 20 69 6e 74 65 67  n a random integ
5780: 65 72 20 62 65 74 77 65 65 6e 20 2d 32 31 34 37  er between -2147
5790: 34 38 33 36 34 38 20 61 6e 64 0a 2b 32 31 34 37  483648 and.+2147
57a0: 34 38 33 36 34 37 2e 3c 2f 74 64 3e 0a 3c 2f 74  483647.</td>.</t
57b0: 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  r>..<tr>.<td val
57c0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
57d0: 22 72 69 67 68 74 22 3e 72 6f 75 6e 64 28 3c 69  "right">round(<i
57e0: 3e 58 3c 2f 69 3e 29 3c 62 72 3e 72 6f 75 6e 64  >X</i>)<br>round
57f0: 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f  (<i>X</i>,<i>Y</
5800: 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c  i>)</td>.<td val
5810: 69 67 6e 3d 22 74 6f 70 22 3e 52 6f 75 6e 64 20  ign="top">Round 
5820: 6f 66 66 20 74 68 65 20 6e 75 6d 62 65 72 20 3c  off the number <
5830: 69 3e 58 3c 2f 69 3e 20 74 6f 20 3c 69 3e 59 3c  i>X</i> to <i>Y<
5840: 2f 69 3e 20 64 69 67 69 74 73 20 74 6f 20 74 68  /i> digits to th
5850: 65 0a 72 69 67 68 74 20 6f 66 20 74 68 65 20 64  e.right of the d
5860: 65 63 69 6d 61 6c 20 70 6f 69 6e 74 2e 20 20 49  ecimal point.  I
5870: 66 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 20 61  f the <i>Y</i> a
5880: 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74  rgument is omitt
5890: 65 64 2c 20 30 20 69 73 20 0a 61 73 73 75 6d 65  ed, 0 is .assume
58a0: 64 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c  d.</td>.</tr>..<
58b0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
58c0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
58d0: 74 22 3e 73 75 62 73 74 72 28 3c 69 3e 58 3c 2f  t">substr(<i>X</
58e0: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 3c 69 3e 5a  i>,<i>Y</i>,<i>Z
58f0: 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  </i>)</td>.<td v
5900: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75  align="top">Retu
5910: 72 6e 20 61 20 73 75 62 73 74 72 69 6e 67 20 6f  rn a substring o
5920: 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67 20 3c  f input string <
5930: 69 3e 58 3c 2f 69 3e 20 74 68 61 74 20 62 65 67  i>X</i> that beg
5940: 69 6e 73 0a 77 69 74 68 20 74 68 65 20 3c 69 3e  ins.with the <i>
5950: 59 3c 2f 69 3e 2d 74 68 20 63 68 61 72 61 63 74  Y</i>-th charact
5960: 65 72 20 61 6e 64 20 77 68 69 63 68 20 69 73 20  er and which is 
5970: 3c 69 3e 5a 3c 2f 69 3e 20 63 68 61 72 61 63 74  <i>Z</i> charact
5980: 65 72 73 20 6c 6f 6e 67 2e 0a 54 68 65 20 6c 65  ers long..The le
5990: 66 74 2d 6d 6f 73 74 20 63 68 61 72 61 63 74 65  ft-most characte
59a0: 72 20 6f 66 20 3c 69 3e 58 3c 2f 69 3e 20 69 73  r of <i>X</i> is
59b0: 20 6e 75 6d 62 65 72 20 31 2e 20 20 49 66 20 3c   number 1.  If <
59c0: 69 3e 59 3c 2f 69 3e 20 69 73 20 6e 65 67 61 74  i>Y</i> is negat
59d0: 69 76 65 0a 74 68 65 20 74 68 65 20 66 69 72 73  ive.the the firs
59e0: 74 20 63 68 61 72 61 63 74 65 72 20 6f 66 20 74  t character of t
59f0: 68 65 20 73 75 62 73 74 72 69 6e 67 20 69 73 20  he substring is 
5a00: 66 6f 75 6e 64 20 62 79 20 63 6f 75 6e 74 69 6e  found by countin
5a10: 67 20 66 72 6f 6d 20 74 68 65 0a 72 69 67 68 74  g from the.right
5a20: 20 72 61 74 68 65 72 20 74 68 61 6e 20 74 68 65   rather than the
5a30: 20 6c 65 66 74 2e 20 20 49 66 20 53 51 4c 69 74   left.  If SQLit
5a40: 65 20 69 73 20 63 6f 6e 66 69 67 75 72 65 64 20  e is configured 
5a50: 74 6f 20 73 75 70 70 6f 72 74 20 55 54 46 2d 38  to support UTF-8
5a60: 2c 0a 74 68 65 6e 20 63 68 61 72 61 63 74 65 72  ,.then character
5a70: 73 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20  s indices refer 
5a80: 74 6f 20 61 63 74 75 61 6c 20 55 54 46 2d 38 20  to actual UTF-8 
5a90: 63 68 61 72 61 63 74 65 72 73 2c 20 6e 6f 74 20  characters, not 
5aa0: 62 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  bytes.</td>.</tr
5ab0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
5ac0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
5ad0: 72 69 67 68 74 22 3e 75 70 70 65 72 28 3c 69 3e  right">upper(<i>
5ae0: 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20  X</i>)</td>.<td 
5af0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74  valign="top">Ret
5b00: 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20 69 6e  urn a copy of in
5b10: 70 75 74 20 73 74 72 69 6e 67 20 3c 69 3e 58 3c  put string <i>X<
5b20: 2f 69 3e 20 63 6f 6e 76 65 72 74 65 64 20 74 6f  /i> converted to
5b30: 20 61 6c 6c 0a 75 70 70 65 72 2d 63 61 73 65 20   all.upper-case 
5b40: 6c 65 74 74 65 72 73 2e 20 20 54 68 65 20 69 6d  letters.  The im
5b50: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20  plementation of 
5b60: 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 75 73  this function us
5b70: 65 73 20 74 68 65 20 43 20 6c 69 62 72 61 72 79  es the C library
5b80: 0a 72 6f 75 74 69 6e 65 20 3c 62 3e 74 6f 75 70  .routine <b>toup
5b90: 70 65 72 28 29 3c 2f 62 3e 20 77 68 69 63 68 20  per()</b> which 
5ba0: 6d 65 61 6e 73 20 69 74 20 6d 61 79 20 6e 6f 74  means it may not
5bb0: 20 77 6f 72 6b 20 63 6f 72 72 65 63 74 6c 79 20   work correctly 
5bc0: 6f 6e 20 0a 55 54 46 2d 38 20 73 74 72 69 6e 67  on .UTF-8 string
5bd0: 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f  s.</td>.</tr>.</
5be0: 74 61 62 6c 65 3e 0a 0a 3c 70 3e 0a 54 68 65 20  table>..<p>.The 
5bf0: 66 6f 6c 6c 6f 77 69 6e 67 20 61 67 67 72 65 67  following aggreg
5c00: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ate functions ar
5c10: 65 20 73 75 70 70 6f 72 74 65 64 3a 0a 3c 2f 70  e supported:.</p
5c20: 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  >..<table border
5c30: 3d 30 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31  =0 cellpadding=1
5c40: 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  0>.<tr>.<td vali
5c50: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
5c60: 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32 30  right" width=120
5c70: 3e 61 76 67 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f  >avg(<i>X</i>)</
5c80: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
5c90: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
5ca0: 61 76 65 72 61 67 65 20 76 61 6c 75 65 20 6f 66  average value of
5cb0: 20 61 6c 6c 20 3c 69 3e 58 3c 2f 69 3e 20 77 69   all <i>X</i> wi
5cc0: 74 68 69 6e 20 61 20 67 72 6f 75 70 2e 3c 2f 74  thin a group.</t
5cd0: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
5ce0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
5cf0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 63 6f  align="right">co
5d00: 75 6e 74 28 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72  unt(<i>X</i>)<br
5d10: 3e 63 6f 75 6e 74 28 2a 29 3c 2f 74 64 3e 0a 3c  >count(*)</td>.<
5d20: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
5d30: 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d 20 72  The first form r
5d40: 65 74 75 72 6e 20 61 20 63 6f 75 6e 74 20 6f 66  eturn a count of
5d50: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74   the number of t
5d60: 69 6d 65 73 0a 74 68 61 74 20 3c 69 3e 58 3c 2f  imes.that <i>X</
5d70: 69 3e 20 69 73 20 6e 6f 74 20 4e 55 4c 4c 20 69  i> is not NULL i
5d80: 6e 20 61 20 67 72 6f 75 70 2e 20 20 54 68 65 20  n a group.  The 
5d90: 73 65 63 6f 6e 64 20 66 6f 72 6d 20 28 77 69 74  second form (wit
5da0: 68 20 6e 6f 20 61 72 67 75 6d 65 6e 74 29 0a 72  h no argument).r
5db0: 65 74 75 72 6e 73 20 74 68 65 20 74 6f 74 61 6c  eturns the total
5dc0: 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20   number of rows 
5dd0: 69 6e 20 74 68 65 20 67 72 6f 75 70 2e 3c 2f 74  in the group.</t
5de0: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
5df0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
5e00: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6d 61  align="right">ma
5e10: 78 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e  x(<i>X</i>)</td>
5e20: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
5e30: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6d 61 78  ">Return the max
5e40: 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20 61 6c  imum value of al
5e50: 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20  l values in the 
5e60: 67 72 6f 75 70 2e 0a 54 68 65 20 75 73 75 61 6c  group..The usual
5e70: 20 73 6f 72 74 20 6f 72 64 65 72 20 69 73 20 75   sort order is u
5e80: 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  sed to determine
5e90: 20 74 68 65 20 6d 61 78 69 6d 75 6d 2e 3c 2f 74   the maximum.</t
5ea0: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
5eb0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
5ec0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 6d 69  align="right">mi
5ed0: 6e 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e  n(<i>X</i>)</td>
5ee0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
5ef0: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6d 69 6e  ">Return the min
5f00: 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20 61 6c  imum value of al
5f10: 6c 20 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20  l values in the 
5f20: 67 72 6f 75 70 2e 0a 54 68 65 20 75 73 75 61 6c  group..The usual
5f30: 20 73 6f 72 74 20 6f 72 64 65 72 20 69 73 20 75   sort order is u
5f40: 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65  sed to determine
5f50: 20 74 68 65 20 6d 69 6e 69 6d 75 6d 2e 3c 2f 74   the minimum.</t
5f60: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
5f70: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
5f80: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73 75  align="right">su
5f90: 6d 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e  m(<i>X</i>)</td>
5fa0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
5fb0: 22 3e 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d  ">Return the num
5fc0: 65 72 69 63 20 73 75 6d 20 6f 66 20 61 6c 6c 20  eric sum of all 
5fd0: 76 61 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72  values in the gr
5fe0: 6f 75 70 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  oup.</td>.</tr>.
5ff0: 3c 2f 74 61 62 6c 65 3e 0a 7d 0a 0a 53 65 63 74  </table>.}..Sect
6000: 69 6f 6e 20 49 4e 53 45 52 54 20 69 6e 73 65 72  ion INSERT inser
6010: 74 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  t..Syntax {sql-s
6020: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 49 4e 53 45  tatement} {.INSE
6030: 52 54 20 5b 4f 52 20 3c 63 6f 6e 66 6c 69 63 74  RT [OR <conflict
6040: 2d 61 6c 67 6f 72 69 74 68 6d 3e 5d 20 49 4e 54  -algorithm>] INT
6050: 4f 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b  O <table-name> [
6060: 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d  (<column-list>)]
6070: 20 56 41 4c 55 45 53 28 3c 76 61 6c 75 65 2d 6c   VALUES(<value-l
6080: 69 73 74 3e 29 20 7c 0a 49 4e 53 45 52 54 20 5b  ist>) |.INSERT [
6090: 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67  OR <conflict-alg
60a0: 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 3c 74  orithm>] INTO <t
60b0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 3c 63 6f  able-name> [(<co
60c0: 6c 75 6d 6e 2d 6c 69 73 74 3e 29 5d 20 3c 73 65  lumn-list>)] <se
60d0: 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a  lect-statement>.
60e0: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
60f0: 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65 6e   INSERT statemen
6100: 74 20 63 6f 6d 65 73 20 69 6e 20 74 77 6f 20 62  t comes in two b
6110: 61 73 69 63 20 66 6f 72 6d 73 2e 20 20 54 68 65  asic forms.  The
6120: 20 66 69 72 73 74 20 66 6f 72 6d 0a 28 77 69 74   first form.(wit
6130: 68 20 74 68 65 20 22 56 41 4c 55 45 53 22 20 6b  h the "VALUES" k
6140: 65 79 77 6f 72 64 29 20 63 72 65 61 74 65 73 20  eyword) creates 
6150: 61 20 73 69 6e 67 6c 65 20 6e 65 77 20 72 6f 77  a single new row
6160: 20 69 6e 20 61 6e 20 65 78 69 73 74 69 6e 67 20   in an existing 
6170: 74 61 62 6c 65 2e 0a 49 66 20 6e 6f 20 63 6f 6c  table..If no col
6180: 75 6d 6e 2d 6c 69 73 74 20 69 73 20 73 70 65 63  umn-list is spec
6190: 69 66 69 65 64 20 74 68 65 6e 20 74 68 65 20 6e  ified then the n
61a0: 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65 73 20  umber of values 
61b0: 6d 75 73 74 0a 62 65 20 74 68 65 20 73 61 6d 65  must.be the same
61c0: 20 61 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   as the number o
61d0: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
61e0: 20 74 61 62 6c 65 2e 20 20 49 66 20 61 20 63 6f   table.  If a co
61f0: 6c 75 6d 6e 2d 6c 69 73 74 0a 69 73 20 73 70 65  lumn-list.is spe
6200: 63 69 66 69 65 64 2c 20 74 68 65 6e 20 74 68 65  cified, then the
6210: 20 6e 75 6d 62 65 72 20 6f 66 20 76 61 6c 75 65   number of value
6220: 73 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65  s must match the
6230: 20 6e 75 6d 62 65 72 20 6f 66 0a 73 70 65 63 69   number of.speci
6240: 66 69 65 64 20 63 6f 6c 75 6d 6e 73 2e 20 20 43  fied columns.  C
6250: 6f 6c 75 6d 6e 73 20 6f 66 20 74 68 65 20 74 61  olumns of the ta
6260: 62 6c 65 20 74 68 61 74 20 64 6f 20 6e 6f 74 20  ble that do not 
6270: 61 70 70 65 61 72 20 69 6e 20 74 68 65 0a 63 6f  appear in the.co
6280: 6c 75 6d 6e 20 6c 69 73 74 20 61 72 65 20 66 69  lumn list are fi
6290: 6c 6c 20 77 69 74 68 20 74 68 65 20 64 65 66 61  ll with the defa
62a0: 75 6c 74 20 76 61 6c 75 65 2c 20 6f 72 20 77 69  ult value, or wi
62b0: 74 68 20 4e 55 4c 4c 20 69 66 20 6e 6f 74 0a 64  th NULL if not.d
62c0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20  efault value is 
62d0: 73 70 65 63 69 66 69 65 64 2e 0a 3c 2f 70 3e 0a  specified..</p>.
62e0: 0a 3c 70 3e 54 68 65 20 73 65 63 6f 6e 64 20 66  .<p>The second f
62f0: 6f 72 6d 20 6f 66 20 74 68 65 20 49 4e 53 45 52  orm of the INSER
6300: 54 20 73 74 61 74 65 6d 65 6e 74 20 74 61 6b 65  T statement take
6310: 73 20 69 74 20 64 61 74 61 20 66 72 6f 6d 20 61  s it data from a
6320: 0a 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e  .SELECT statemen
6330: 74 2e 20 20 54 68 65 20 6e 75 6d 62 65 72 20 6f  t.  The number o
6340: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65  f columns in the
6350: 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 0a 53   result of the.S
6360: 45 4c 45 43 54 20 6d 75 73 74 20 65 78 61 63 74  ELECT must exact
6370: 6c 79 20 6d 61 74 63 68 20 74 68 65 20 6e 75 6d  ly match the num
6380: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
6390: 6e 20 74 68 65 20 74 61 62 6c 65 20 69 66 0a 6e  n the table if.n
63a0: 6f 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 69 73  o column list is
63b0: 20 73 70 65 63 69 66 69 65 64 2c 20 6f 72 20 69   specified, or i
63c0: 74 20 6d 75 73 74 20 6d 61 74 63 68 20 74 68 65  t must match the
63d0: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d   number of colum
63e0: 6e 73 0a 6e 61 6d 65 20 69 6e 20 74 68 65 20 63  ns.name in the c
63f0: 6f 6c 75 6d 6e 20 6c 69 73 74 2e 20 20 41 20 6e  olumn list.  A n
6400: 65 77 20 65 6e 74 72 79 20 69 73 20 6d 61 64 65  ew entry is made
6410: 20 69 6e 20 74 68 65 20 74 61 62 6c 65 0a 66 6f   in the table.fo
6420: 72 20 65 76 65 72 79 20 72 6f 77 20 6f 66 20 74  r every row of t
6430: 68 65 20 53 45 4c 45 43 54 20 72 65 73 75 6c 74  he SELECT result
6440: 2e 20 20 54 68 65 20 53 45 4c 45 43 54 20 6d 61  .  The SELECT ma
6450: 79 20 62 65 20 73 69 6d 70 6c 65 0a 6f 72 20 63  y be simple.or c
6460: 6f 6d 70 6f 75 6e 64 2e 20 20 49 66 20 74 68 65  ompound.  If the
6470: 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
6480: 74 20 68 61 73 20 61 6e 20 4f 52 44 45 52 20 42  t has an ORDER B
6490: 59 20 63 6c 61 75 73 65 2c 0a 74 68 65 20 4f 52  Y clause,.the OR
64a0: 44 45 52 20 42 59 20 69 73 20 69 67 6e 6f 72 65  DER BY is ignore
64b0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  d.</p>..<p>The o
64c0: 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74  ptional conflict
64d0: 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74  -clause allows t
64e0: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
64f0: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
6500: 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f  ve.constraint co
6510: 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f  nflict resolutio
6520: 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20 75  n algorithm to u
6530: 73 65 20 64 75 72 69 6e 67 20 74 68 69 73 20 6f  se during this o
6540: 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65 20  ne command..See 
6550: 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c  the section titl
6560: 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e  ed.<a href="#con
6570: 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49  flict">ON CONFLI
6580: 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74  CT</a> for addit
6590: 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f  ional informatio
65a0: 6e 2e 0a 46 6f 72 20 63 6f 6d 70 61 74 69 62 69  n..For compatibi
65b0: 6c 69 74 79 20 77 69 74 68 20 4d 79 53 51 4c 2c  lity with MySQL,
65c0: 20 74 68 65 20 70 61 72 73 65 72 20 61 6c 6c 6f   the parser allo
65d0: 77 73 20 74 68 65 20 75 73 65 20 6f 66 20 74 68  ws the use of th
65e0: 65 0a 73 69 6e 67 6c 65 20 6b 65 79 77 6f 72 64  e.single keyword
65f0: 20 22 52 45 50 4c 41 43 45 22 20 61 73 20 61 6e   "REPLACE" as an
6600: 20 61 6c 69 61 73 20 66 6f 72 20 22 49 4e 53 45   alias for "INSE
6610: 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22 2e 0a  RT OR REPLACE"..
6620: 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74 69 6f 6e 20  </p>.}..Section 
6630: 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61  {ON CONFLICT cla
6640: 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74 0a 0a 53  use} conflict..S
6650: 79 6e 74 61 78 20 7b 63 6f 6e 66 6c 69 63 74 2d  yntax {conflict-
6660: 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f 4e  clause} {.ON CON
6670: 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d  FLICT <conflict-
6680: 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d 20 7b 63 6f  algorithm>.} {co
6690: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
66a0: 7d 20 7b 0a 52 4f 4c 4c 42 41 43 4b 20 7c 20 41  } {.ROLLBACK | A
66b0: 42 4f 52 54 20 7c 20 46 41 49 4c 20 7c 20 49 47  BORT | FAIL | IG
66c0: 4e 4f 52 45 20 7c 20 52 45 50 4c 41 43 45 0a 7d  NORE | REPLACE.}
66d0: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
66e0: 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
66f0: 73 65 20 69 73 20 6e 6f 74 20 61 20 73 65 70 61  se is not a sepa
6700: 72 61 74 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64  rate SQL command
6710: 2e 20 20 49 74 20 69 73 20 61 0a 6e 6f 6e 2d 73  .  It is a.non-s
6720: 74 61 6e 64 61 72 64 20 63 6c 61 75 73 65 20 74  tandard clause t
6730: 68 61 74 20 63 61 6e 20 61 70 70 65 61 72 20 69  hat can appear i
6740: 6e 20 6d 61 6e 79 20 6f 74 68 65 72 20 53 51 4c  n many other SQL
6750: 20 63 6f 6d 6d 61 6e 64 73 2e 0a 49 74 20 69 73   commands..It is
6760: 20 67 69 76 65 6e 20 69 74 73 20 6f 77 6e 20 73   given its own s
6770: 65 63 74 69 6f 6e 20 69 6e 20 74 68 69 73 20 64  ection in this d
6780: 6f 63 75 6d 65 6e 74 20 62 65 63 61 75 73 65 20  ocument because 
6790: 69 74 20 69 73 20 6e 6f 74 0a 70 61 72 74 20 6f  it is not.part o
67a0: 66 20 73 74 61 6e 64 61 72 64 20 53 51 4c 20 61  f standard SQL a
67b0: 6e 64 20 74 68 65 72 65 66 6f 72 65 20 6d 69 67  nd therefore mig
67c0: 68 74 20 6e 6f 74 20 62 65 20 66 61 6d 69 6c 69  ht not be famili
67d0: 61 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ar.</p>..<p>The 
67e0: 73 79 6e 74 61 78 20 66 6f 72 20 74 68 65 20 4f  syntax for the O
67f0: 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73  N CONFLICT claus
6800: 65 20 69 73 20 61 73 20 73 68 6f 77 6e 20 61 62  e is as shown ab
6810: 6f 76 65 20 66 6f 72 0a 74 68 65 20 43 52 45 41  ove for.the CREA
6820: 54 45 20 54 41 42 4c 45 2c 20 43 52 45 41 54 45  TE TABLE, CREATE
6830: 20 49 4e 44 45 58 2c 20 61 6e 64 20 42 45 47 49   INDEX, and BEGI
6840: 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 20 63 6f  N TRANSACTION co
6850: 6d 6d 61 6e 64 73 2e 0a 46 6f 72 20 74 68 65 20  mmands..For the 
6860: 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 61 6e  COPY, INSERT, an
6870: 64 20 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64  d UPDATE command
6880: 73 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 73 0a  s, the keywords.
6890: 22 4f 4e 20 43 4f 4e 46 4c 49 43 54 22 20 61 72  "ON CONFLICT" ar
68a0: 65 20 72 65 70 6c 61 63 65 64 20 62 79 20 22 4f  e replaced by "O
68b0: 52 22 2c 20 74 6f 20 6d 61 6b 65 20 74 68 65 20  R", to make the 
68c0: 73 79 6e 74 61 78 20 73 65 65 6d 20 6d 6f 72 65  syntax seem more
68d0: 0a 6e 61 74 75 72 61 6c 2e 20 20 42 75 74 20 74  .natural.  But t
68e0: 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68  he meaning of th
68f0: 65 20 63 6c 61 75 73 65 20 69 73 20 74 68 65 20  e clause is the 
6900: 73 61 6d 65 20 65 69 74 68 65 72 20 77 61 79 2e  same either way.
6910: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20  </p>..<p>The ON 
6920: 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
6930: 73 70 65 63 69 66 69 65 73 20 61 6e 20 61 6c 67  specifies an alg
6940: 6f 72 69 74 68 6d 20 75 73 65 64 20 74 6f 20 72  orithm used to r
6950: 65 73 6f 6c 76 65 0a 63 6f 6e 73 74 72 61 69 6e  esolve.constrain
6960: 74 20 63 6f 6e 66 6c 69 63 74 73 2e 20 20 54 68  t conflicts.  Th
6970: 65 72 65 20 61 72 65 20 66 69 76 65 20 63 68 6f  ere are five cho
6980: 69 63 65 73 3a 20 52 4f 4c 4c 42 41 43 4b 2c 20  ices: ROLLBACK, 
6990: 41 42 4f 52 54 2c 0a 46 41 49 4c 2c 20 49 47 4e  ABORT,.FAIL, IGN
69a0: 4f 52 45 2c 20 61 6e 64 20 52 45 50 4c 41 43 45  ORE, and REPLACE
69b0: 2e 20 54 68 65 20 64 65 66 61 75 6c 74 20 61 6c  . The default al
69c0: 67 6f 72 69 74 68 6d 20 69 73 20 41 42 4f 52 54  gorithm is ABORT
69d0: 2e 20 20 54 68 69 73 0a 69 73 20 77 68 61 74 20  .  This.is what 
69e0: 74 68 65 79 20 6d 65 61 6e 3a 3c 2f 70 3e 0a 0a  they mean:</p>..
69f0: 3c 64 6c 3e 0a 3c 64 74 3e 3c 62 3e 52 4f 4c 4c  <dl>.<dt><b>ROLL
6a00: 42 41 43 4b 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64  BACK</b></dt>.<d
6a10: 64 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73  d><p>When a cons
6a20: 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e  traint violation
6a30: 20 6f 63 63 75 72 73 2c 20 61 6e 20 69 6d 6d 65   occurs, an imme
6a40: 64 69 61 74 65 20 52 4f 4c 4c 42 41 43 4b 0a 6f  diate ROLLBACK.o
6a50: 63 63 75 72 73 2c 20 74 68 75 73 20 65 6e 64 69  ccurs, thus endi
6a60: 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 74  ng the current t
6a70: 72 61 6e 73 61 63 74 69 6f 6e 2c 20 61 6e 64 20  ransaction, and 
6a80: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72  the command abor
6a90: 74 73 0a 77 69 74 68 20 61 20 72 65 74 75 72 6e  ts.with a return
6aa0: 20 63 6f 64 65 20 6f 66 20 53 51 4c 49 54 45 5f   code of SQLITE_
6ab0: 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 49 66 20  CONSTRAINT.  If 
6ac0: 6e 6f 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69  no transaction i
6ad0: 73 0a 61 63 74 69 76 65 20 28 6f 74 68 65 72 20  s.active (other 
6ae0: 74 68 61 6e 20 74 68 65 20 69 6d 70 6c 69 65 64  than the implied
6af0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 68 61   transaction tha
6b00: 74 20 69 73 20 63 72 65 61 74 65 64 20 6f 6e 20  t is created on 
6b10: 65 76 65 72 79 0a 63 6f 6d 6d 61 6e 64 29 20 74  every.command) t
6b20: 68 65 6e 20 74 68 69 73 20 61 6c 67 6f 72 69 74  hen this algorit
6b30: 68 6d 20 77 6f 72 6b 73 20 74 68 65 20 73 61 6d  hm works the sam
6b40: 65 20 61 73 20 41 42 4f 52 54 2e 3c 2f 70 3e 3c  e as ABORT.</p><
6b50: 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 41 42 4f  /dd>..<dt><b>ABO
6b60: 52 54 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e  RT</b></dt>.<dd>
6b70: 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72  <p>When a constr
6b80: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
6b90: 63 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61  ccurs, the comma
6ba0: 6e 64 20 62 61 63 6b 73 20 6f 75 74 0a 61 6e 79  nd backs out.any
6bb0: 20 70 72 69 6f 72 20 63 68 61 6e 67 65 73 20 69   prior changes i
6bc0: 74 20 6d 69 67 68 74 20 68 61 76 65 20 6d 61 64  t might have mad
6bd0: 65 20 61 6e 64 20 61 62 6f 72 74 73 20 77 69 74  e and aborts wit
6be0: 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 0a  h a return code.
6bf0: 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  of SQLITE_CONSTR
6c00: 41 49 4e 54 2e 20 20 42 75 74 20 6e 6f 20 52 4f  AINT.  But no RO
6c10: 4c 4c 42 41 43 4b 20 69 73 20 65 78 65 63 75 74  LLBACK is execut
6c20: 65 64 20 73 6f 20 63 68 61 6e 67 65 73 0a 66 72  ed so changes.fr
6c30: 6f 6d 20 70 72 69 6f 72 20 63 6f 6d 6d 61 6e 64  om prior command
6c40: 73 20 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d  s within the sam
6c50: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 61 72  e transaction.ar
6c60: 65 20 70 72 65 73 65 72 76 65 64 2e 20 20 54 68  e preserved.  Th
6c70: 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c  is is the defaul
6c80: 74 20 62 65 68 61 76 69 6f 72 2e 3c 2f 70 3e 3c  t behavior.</p><
6c90: 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 46 41 49  /dd>..<dt><b>FAI
6ca0: 4c 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c  L</b></dt>.<dd><
6cb0: 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61  p>When a constra
6cc0: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
6cd0: 63 75 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e  curs, the comman
6ce0: 64 20 61 62 6f 72 74 73 20 77 69 74 68 20 61 0a  d aborts with a.
6cf0: 72 65 74 75 72 6e 20 63 6f 64 65 20 53 51 4c 49  return code SQLI
6d00: 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20  TE_CONSTRAINT.  
6d10: 42 75 74 20 61 6e 79 20 63 68 61 6e 67 65 73 20  But any changes 
6d20: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 20  to the database 
6d30: 74 68 61 74 0a 74 68 65 20 63 6f 6d 6d 61 6e 64  that.the command
6d40: 20 6d 61 64 65 20 70 72 69 6f 72 20 74 6f 20 65   made prior to e
6d50: 6e 63 6f 75 6e 74 65 72 69 6e 67 20 74 68 65 20  ncountering the 
6d60: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
6d70: 74 69 6f 6e 0a 61 72 65 20 70 72 65 73 65 72 76  tion.are preserv
6d80: 65 64 20 61 6e 64 20 61 72 65 20 6e 6f 74 20 62  ed and are not b
6d90: 61 63 6b 65 64 20 6f 75 74 2e 20 20 46 6f 72 20  acked out.  For 
6da0: 65 78 61 6d 70 6c 65 2c 20 69 66 20 61 6e 20 55  example, if an U
6db0: 50 44 41 54 45 0a 73 74 61 74 65 6d 65 6e 74 20  PDATE.statement 
6dc0: 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 20 63 6f  encountered a co
6dd0: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
6de0: 6f 6e 20 6f 6e 20 74 68 65 20 31 30 30 74 68 20  on on the 100th 
6df0: 72 6f 77 20 74 68 61 74 0a 69 74 20 61 74 74 65  row that.it atte
6e00: 6d 70 74 73 20 74 6f 20 75 70 64 61 74 65 2c 20  mpts to update, 
6e10: 74 68 65 6e 20 74 68 65 20 66 69 72 73 74 20 39  then the first 9
6e20: 39 20 72 6f 77 20 63 68 61 6e 67 65 73 20 61 72  9 row changes ar
6e30: 65 20 70 72 65 73 65 72 76 65 64 0a 62 75 74 20  e preserved.but 
6e40: 63 68 61 6e 67 65 73 20 74 6f 20 72 6f 77 73 20  changes to rows 
6e50: 31 30 30 20 61 6e 64 20 62 65 79 6f 6e 64 20 6e  100 and beyond n
6e60: 65 76 65 72 20 6f 63 63 75 72 2e 3c 2f 70 3e 3c  ever occur.</p><
6e70: 2f 64 64 3e 0a 0a 3c 64 74 3e 3c 62 3e 49 47 4e  /dd>..<dt><b>IGN
6e80: 4f 52 45 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64  ORE</b></dt>.<dd
6e90: 3e 3c 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74  ><p>When a const
6ea0: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
6eb0: 6f 63 63 75 72 73 2c 20 74 68 65 20 6f 6e 65 20  occurs, the one 
6ec0: 72 6f 77 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  row that contain
6ed0: 73 0a 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74  s.the constraint
6ee0: 20 76 69 6f 6c 61 74 69 6f 6e 20 69 73 20 6e 6f   violation is no
6ef0: 74 20 69 6e 73 65 72 74 65 64 20 6f 72 20 63 68  t inserted or ch
6f00: 61 6e 67 65 64 2e 20 20 42 75 74 20 74 68 65 20  anged.  But the 
6f10: 63 6f 6d 6d 61 6e 64 0a 63 6f 6e 74 69 6e 75 65  command.continue
6f20: 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d  s executing norm
6f30: 61 6c 6c 79 2e 20 20 4f 74 68 65 72 20 72 6f 77  ally.  Other row
6f40: 73 20 62 65 66 6f 72 65 20 61 6e 64 20 61 66 74  s before and aft
6f50: 65 72 20 74 68 65 20 72 6f 77 20 74 68 61 74 0a  er the row that.
6f60: 63 6f 6e 74 61 69 6e 65 64 20 74 68 65 20 63 6f  contained the co
6f70: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
6f80: 6f 6e 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62  on continue to b
6f90: 65 20 69 6e 73 65 72 74 65 64 20 6f 72 20 75 70  e inserted or up
6fa0: 64 61 74 65 64 0a 6e 6f 72 6d 61 6c 6c 79 2e 20  dated.normally. 
6fb0: 20 4e 6f 20 65 72 72 6f 72 20 69 73 20 72 65 74   No error is ret
6fc0: 75 72 6e 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a  urned.</p></dd>.
6fd0: 0a 3c 64 74 3e 3c 62 3e 52 45 50 4c 41 43 45 3c  .<dt><b>REPLACE<
6fe0: 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  /b></dt>.<dd><p>
6ff0: 57 68 65 6e 20 61 20 55 4e 49 51 55 45 20 63 6f  When a UNIQUE co
7000: 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69  nstraint violati
7010: 6f 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 70  on occurs, the p
7020: 72 65 2d 65 78 69 73 74 69 6e 67 20 72 6f 77 0a  re-existing row.
7030: 74 68 61 74 20 69 73 20 63 61 75 73 69 6e 67 20  that is causing 
7040: 74 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  the constraint v
7050: 69 6f 6c 61 74 69 6f 6e 20 69 73 20 72 65 6d 6f  iolation is remo
7060: 76 65 64 20 70 72 69 6f 72 20 74 6f 20 69 6e 73  ved prior to ins
7070: 65 72 74 69 6e 67 0a 6f 72 20 75 70 64 61 74 69  erting.or updati
7080: 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  ng the current r
7090: 6f 77 2e 20 20 54 68 75 73 20 74 68 65 20 69 6e  ow.  Thus the in
70a0: 73 65 72 74 20 6f 72 20 75 70 64 61 74 65 20 61  sert or update a
70b0: 6c 77 61 79 73 20 6f 63 63 75 72 73 2e 0a 54 68  lways occurs..Th
70c0: 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e  e command contin
70d0: 75 65 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f  ues executing no
70e0: 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f  rmally.  No erro
70f0: 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 3c 2f  r is returned.</
7100: 70 3e 0a 3c 70 3e 49 66 20 61 20 4e 4f 54 20 4e  p>.<p>If a NOT N
7110: 55 4c 4c 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  ULL constraint v
7120: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
7130: 20 74 68 65 20 4e 55 4c 4c 20 76 61 6c 75 65 20   the NULL value 
7140: 69 73 20 72 65 70 6c 61 63 65 64 0a 62 79 20 74  is replaced.by t
7150: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
7160: 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e   for that column
7170: 2e 20 20 49 66 20 74 68 65 20 63 6f 6c 75 6d 6e  .  If the column
7180: 20 68 61 73 20 6e 6f 20 64 65 66 61 75 6c 74 0a   has no default.
7190: 76 61 6c 75 65 2c 20 74 68 65 6e 20 74 68 65 20  value, then the 
71a0: 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d 20  ABORT algorithm 
71b0: 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 3c 2f 64  is used.</p>.</d
71c0: 64 3e 0a 3c 2f 64 6c 3e 0a 0a 3c 70 3e 0a 54 68  d>.</dl>..<p>.Th
71d0: 65 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  e conflict resol
71e0: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
71f0: 63 61 6e 20 62 65 20 73 70 65 63 69 66 69 65 64  can be specified
7200: 20 69 6e 20 74 68 72 65 65 20 70 6c 61 63 65 73   in three places
7210: 2c 0a 69 6e 20 6f 72 64 65 72 20 66 72 6f 6d 20  ,.in order from 
7220: 6c 6f 77 65 73 74 20 74 6f 20 68 69 67 68 65 73  lowest to highes
7230: 74 20 70 72 65 63 65 64 65 6e 63 65 3a 0a 3c 2f  t precedence:.</
7240: 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c 69 3e 3c 70 3e  p>..<ol>.<li><p>
7250: 0a 4f 6e 20 61 20 42 45 47 49 4e 20 54 52 41 4e  .On a BEGIN TRAN
7260: 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61 6e 64 2e  SACTION command.
7270: 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e  .</p></li>..<li>
7280: 3c 70 3e 0a 4f 6e 20 69 6e 64 69 76 69 64 75 61  <p>.On individua
7290: 6c 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 77 69  l constraints wi
72a0: 74 68 69 6e 20 61 20 43 52 45 41 54 45 20 54 41  thin a CREATE TA
72b0: 42 4c 45 20 6f 72 20 43 52 45 41 54 45 20 49 4e  BLE or CREATE IN
72c0: 44 45 58 0a 73 74 61 74 65 6d 65 6e 74 2e 0a 3c  DEX.statement..<
72d0: 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70  /p></li>..<li><p
72e0: 3e 0a 49 6e 20 74 68 65 20 4f 52 20 63 6c 61 75  >.In the OR clau
72f0: 73 65 20 6f 66 20 61 20 43 4f 50 59 2c 20 49 4e  se of a COPY, IN
7300: 53 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45 20  SERT, or UPDATE 
7310: 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f 70 3e 3c 2f 6c  command..</p></l
7320: 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c 70 3e 54 68 65  i>.</ol>..<p>The
7330: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
7340: 66 69 65 64 20 69 6e 20 74 68 65 20 4f 52 20 63  fied in the OR c
7350: 6c 61 75 73 65 20 6f 66 20 61 20 43 4f 50 59 2c  lause of a COPY,
7360: 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50 44 41   INSERT, or UPDA
7370: 54 45 0a 6f 76 65 72 72 69 64 65 73 20 61 6e 79  TE.overrides any
7380: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
7390: 66 69 65 64 20 62 79 20 61 20 43 52 45 41 54 45  fied by a CREATE
73a0: 20 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54 45   TABLE or CREATE
73b0: 20 49 4e 44 45 58 2e 0a 54 68 65 20 61 6c 67 6f   INDEX..The algo
73c0: 72 69 74 68 6d 20 73 70 65 63 69 66 69 65 64 20  rithm specified 
73d0: 77 69 74 68 69 6e 20 61 20 43 52 45 41 54 45 20  within a CREATE 
73e0: 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54 45 20  TABLE or CREATE 
73f0: 49 4e 44 45 58 20 77 69 6c 6c 2c 20 69 6e 20 74  INDEX will, in t
7400: 75 72 6e 2c 0a 6f 76 65 72 72 69 64 65 20 74 68  urn,.override th
7410: 65 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63  e algorithm spec
7420: 69 66 69 65 64 20 62 79 20 61 20 42 45 47 49 4e  ified by a BEGIN
7430: 20 54 52 41 4e 53 41 43 54 49 4f 4e 20 63 6f 6d   TRANSACTION com
7440: 6d 61 6e 64 2e 0a 49 66 20 6e 6f 20 61 6c 67 6f  mand..If no algo
7450: 72 69 74 68 6d 20 69 73 20 73 70 65 63 69 66 69  rithm is specifi
7460: 65 64 20 61 6e 79 77 68 65 72 65 2c 20 74 68 65  ed anywhere, the
7470: 20 41 42 4f 52 54 20 61 6c 67 6f 72 69 74 68 6d   ABORT algorithm
7480: 20 69 73 20 75 73 65 64 2e 3c 2f 70 3e 0a 0a 7d   is used.</p>..}
7490: 0a 23 20 3c 70 3e 46 6f 72 20 61 64 64 69 74 69  .# <p>For additi
74a0: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
74b0: 2c 20 73 65 65 20 0a 23 20 3c 61 20 68 72 65 66  , see .# <a href
74c0: 3d 22 63 6f 6e 66 6c 69 63 74 2e 68 74 6d 6c 22  ="conflict.html"
74d0: 3e 63 6f 6e 66 6c 69 63 74 2e 68 74 6d 6c 3c 2f  >conflict.html</
74e0: 61 3e 2e 3c 2f 70 3e 0a 0a 0a 53 65 63 74 69 6f  a>.</p>...Sectio
74f0: 6e 20 50 52 41 47 4d 41 20 70 72 61 67 6d 61 0a  n PRAGMA pragma.
7500: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
7510: 74 65 6d 65 6e 74 7d 20 7b 0a 50 52 41 47 4d 41  tement} {.PRAGMA
7520: 20 3c 6e 61 6d 65 3e 20 3d 20 3c 76 61 6c 75 65   <name> = <value
7530: 3e 20 7c 0a 50 52 41 47 4d 41 20 3c 66 75 6e 63  > |.PRAGMA <func
7540: 74 69 6f 6e 3e 28 3c 61 72 67 3e 29 0a 7d 0a 0a  tion>(<arg>).}..
7550: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 50 52  puts {.<p>The PR
7560: 41 47 4d 41 20 63 6f 6d 6d 61 6e 64 20 69 73 20  AGMA command is 
7570: 75 73 65 64 20 74 6f 20 6d 6f 64 69 66 79 20 74  used to modify t
7580: 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20  he operation of 
7590: 74 68 65 20 53 51 4c 69 74 65 20 6c 69 62 72 61  the SQLite libra
75a0: 72 79 2e 0a 54 68 65 20 70 72 61 67 6d 61 20 63  ry..The pragma c
75b0: 6f 6d 6d 61 6e 64 20 69 73 20 65 78 70 65 72 69  ommand is experi
75c0: 6d 65 6e 74 61 6c 20 61 6e 64 20 73 70 65 63 69  mental and speci
75d0: 66 69 63 20 70 72 61 67 6d 61 20 73 74 61 74 65  fic pragma state
75e0: 6d 65 6e 74 73 20 6d 61 79 0a 72 65 6d 6f 76 65  ments may.remove
75f0: 64 20 6f 72 20 61 64 64 65 64 20 69 6e 20 66 75  d or added in fu
7600: 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
7610: 20 53 51 4c 69 74 65 2e 20 20 55 73 65 20 74 68   SQLite.  Use th
7620: 69 73 20 63 6f 6d 6d 61 6e 64 0a 77 69 74 68 20  is command.with 
7630: 63 61 75 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70  caution.</p>..<p
7640: 3e 54 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70  >The current imp
7650: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 73 75 70 70  lementation supp
7660: 6f 72 74 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69  orts the followi
7670: 6e 67 20 70 72 61 67 6d 61 73 3a 3c 2f 70 3e 0a  ng pragmas:</p>.
7680: 0a 3c 75 6c 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e  .<ul>.<li><p><b>
7690: 50 52 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a  PRAGMA cache_siz
76a0: 65 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52  e;.       <br>PR
76b0: 41 47 4d 41 20 63 61 63 68 65 5f 73 69 7a 65 20  AGMA cache_size 
76c0: 3d 20 3c 2f 62 3e 3c 69 3e 4e 75 6d 62 65 72 2d  = </b><i>Number-
76d0: 6f 66 2d 70 61 67 65 73 3c 2f 69 3e 3c 62 3e 3b  of-pages</i><b>;
76e0: 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e  </b></p>.    <p>
76f0: 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65 20  Query or change 
7700: 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62  the maximum numb
7710: 65 72 20 6f 66 20 64 61 74 61 62 61 73 65 20 64  er of database d
7720: 69 73 6b 20 70 61 67 65 73 20 74 68 61 74 20 53  isk pages that S
7730: 51 4c 69 74 65 0a 20 20 20 20 77 69 6c 6c 20 68  QLite.    will h
7740: 6f 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20 61 74  old in memory at
7750: 20 6f 6e 63 65 2e 20 20 45 61 63 68 20 70 61 67   once.  Each pag
7760: 65 20 75 73 65 73 20 61 62 6f 75 74 20 31 2e 35  e uses about 1.5
7770: 4b 20 6f 66 20 6d 65 6d 6f 72 79 2e 0a 20 20 20  K of memory..   
7780: 20 54 68 65 20 64 65 66 61 75 6c 74 20 63 61 63   The default cac
7790: 68 65 20 73 69 7a 65 20 69 73 20 32 30 30 30 2e  he size is 2000.
77a0: 20 20 49 66 20 79 6f 75 20 61 72 65 20 64 6f 69    If you are doi
77b0: 6e 67 20 55 50 44 41 54 45 73 20 6f 72 20 44 45  ng UPDATEs or DE
77c0: 4c 45 54 45 73 0a 20 20 20 20 74 68 61 74 20 63  LETEs.    that c
77d0: 68 61 6e 67 65 20 6d 61 6e 79 20 72 6f 77 73 20  hange many rows 
77e0: 6f 66 20 61 20 64 61 74 61 62 61 73 65 20 61 6e  of a database an
77f0: 64 20 79 6f 75 20 64 6f 20 6e 6f 74 20 6d 69 6e  d you do not min
7800: 64 20 69 66 20 53 51 4c 69 74 65 0a 20 20 20 20  d if SQLite.    
7810: 75 73 65 73 20 6d 6f 72 65 20 6d 65 6d 6f 72 79  uses more memory
7820: 2c 20 79 6f 75 20 63 61 6e 20 69 6e 63 72 65 61  , you can increa
7830: 73 65 20 74 68 65 20 63 61 63 68 65 20 73 69 7a  se the cache siz
7840: 65 20 66 6f 72 20 61 20 70 6f 73 73 69 62 6c 65  e for a possible
7850: 20 73 70 65 65 64 0a 20 20 20 20 69 6d 70 72 6f   speed.    impro
7860: 76 65 6d 65 6e 74 2e 3c 2f 70 3e 0a 20 20 20 20  vement.</p>.    
7870: 3c 70 3e 57 68 65 6e 20 79 6f 75 20 63 68 61 6e  <p>When you chan
7880: 67 65 20 74 68 65 20 63 61 63 68 65 20 73 69 7a  ge the cache siz
7890: 65 20 75 73 69 6e 67 20 74 68 65 20 63 61 63 68  e using the cach
78a0: 65 5f 73 69 7a 65 20 70 72 61 67 6d 61 2c 20 74  e_size pragma, t
78b0: 68 65 0a 20 20 20 20 63 68 61 6e 67 65 20 6f 6e  he.    change on
78c0: 6c 79 20 65 6e 64 75 72 65 73 20 66 6f 72 20 74  ly endures for t
78d0: 68 65 20 63 75 72 72 65 6e 74 20 73 65 73 73 69  he current sessi
78e0: 6f 6e 2e 20 20 54 68 65 20 63 61 63 68 65 20 73  on.  The cache s
78f0: 69 7a 65 20 72 65 76 65 72 74 73 0a 20 20 20 20  ize reverts.    
7900: 74 6f 20 74 68 65 20 64 65 66 61 75 6c 74 20 76  to the default v
7910: 61 6c 75 65 20 77 68 65 6e 20 74 68 65 20 64 61  alue when the da
7920: 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64  tabase is closed
7930: 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20 20   and reopened.  
7940: 55 73 65 0a 20 20 20 20 74 68 65 20 3c 62 3e 64  Use.    the <b>d
7950: 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a  efault_cache_siz
7960: 65 3c 2f 62 3e 20 70 72 61 67 6d 61 20 74 6f 20  e</b> pragma to 
7970: 63 68 65 63 6b 20 74 68 65 20 63 61 63 68 65 20  check the cache 
7980: 73 69 7a 65 20 70 65 72 6d 61 6e 65 6e 74 6c 79  size permanently
7990: 0a 20 20 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a  .    </p></li>..
79a0: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
79b0: 20 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73 20 3d   count_changes =
79c0: 20 4f 4e 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e   ON;.       <br>
79d0: 50 52 41 47 4d 41 20 63 6f 75 6e 74 5f 63 68 61  PRAGMA count_cha
79e0: 6e 67 65 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e 3c  nges = OFF;</b><
79f0: 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65 6e 20  /p>.    <p>When 
7a00: 6f 6e 2c 20 74 68 65 20 43 4f 55 4e 54 5f 43 48  on, the COUNT_CH
7a10: 41 4e 47 45 53 20 70 72 61 67 6d 61 20 63 61 75  ANGES pragma cau
7a20: 73 65 73 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  ses the callback
7a30: 20 66 75 6e 63 74 69 6f 6e 20 74 6f 0a 20 20 20   function to.   
7a40: 20 62 65 20 69 6e 76 6f 6b 65 64 20 6f 6e 63 65   be invoked once
7a50: 20 66 6f 72 20 65 61 63 68 20 44 45 4c 45 54 45   for each DELETE
7a60: 2c 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50 44  , INSERT, or UPD
7a70: 41 54 45 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20  ATE operation.  
7a80: 54 68 65 0a 20 20 20 20 61 72 67 75 6d 65 6e 74  The.    argument
7a90: 20 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   is the number o
7aa0: 66 20 72 6f 77 73 20 74 68 61 74 20 77 65 72 65  f rows that were
7ab0: 20 63 68 61 6e 67 65 64 2e 3c 2f 70 3e 0a 20 20   changed.</p>.  
7ac0: 20 20 3c 70 3e 54 68 69 73 20 70 72 61 67 6d 61    <p>This pragma
7ad0: 20 6d 61 79 20 62 65 20 72 65 6d 6f 76 65 64 20   may be removed 
7ae0: 66 72 6f 6d 20 66 75 74 75 72 65 20 76 65 72 73  from future vers
7af0: 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74 65 2e 0a  ions of SQLite..
7b00: 20 20 20 20 43 6f 6e 73 69 64 65 72 20 75 73 69      Consider usi
7b10: 6e 67 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65  ng the <b>sqlite
7b20: 5f 63 68 61 6e 67 65 73 28 29 3c 2f 62 3e 20 41  _changes()</b> A
7b30: 50 49 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73 74  PI function inst
7b40: 65 61 64 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c  ead.</p></li>..<
7b50: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
7b60: 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69  default_cache_si
7b70: 7a 65 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50  ze;.       <br>P
7b80: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61  RAGMA default_ca
7b90: 63 68 65 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e 3c  che_size = </b><
7ba0: 69 3e 4e 75 6d 62 65 72 2d 6f 66 2d 70 61 67 65  i>Number-of-page
7bb0: 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70  s</i><b>;</b></p
7bc0: 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f  >.    <p>Query o
7bd0: 72 20 63 68 61 6e 67 65 20 74 68 65 20 6d 61 78  r change the max
7be0: 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 64  imum number of d
7bf0: 61 74 61 62 61 73 65 20 64 69 73 6b 20 70 61 67  atabase disk pag
7c00: 65 73 20 74 68 61 74 20 53 51 4c 69 74 65 0a 20  es that SQLite. 
7c10: 20 20 20 77 69 6c 6c 20 68 6f 6c 64 20 69 6e 20     will hold in 
7c20: 6d 65 6d 6f 72 79 20 61 74 20 6f 6e 63 65 2e 20  memory at once. 
7c30: 20 45 61 63 68 20 70 61 67 65 20 75 73 65 73 20   Each page uses 
7c40: 61 62 6f 75 74 20 31 2e 35 4b 20 6f 66 20 6d 65  about 1.5K of me
7c50: 6d 6f 72 79 2e 0a 20 20 20 20 54 68 69 73 20 70  mory..    This p
7c60: 72 61 67 6d 61 20 77 6f 72 6b 73 20 6c 69 6b 65  ragma works like
7c70: 20 74 68 65 20 3c 62 3e 63 61 63 68 65 5f 73 69   the <b>cache_si
7c80: 7a 65 3c 2f 62 3e 20 70 72 61 67 6d 61 20 77 69  ze</b> pragma wi
7c90: 74 68 20 74 68 65 20 61 64 64 69 74 69 6f 6e 0a  th the addition.
7ca0: 20 20 20 20 66 65 61 74 75 72 65 20 74 68 61 74      feature that
7cb0: 20 69 74 20 63 68 61 6e 67 65 73 20 74 68 65 20   it changes the 
7cc0: 63 61 63 68 65 20 73 69 7a 65 20 70 65 72 73 69  cache size persi
7cd0: 73 74 65 6e 74 6c 79 2e 20 20 57 69 74 68 20 74  stently.  With t
7ce0: 68 69 73 20 70 72 61 67 6d 61 2c 0a 20 20 20 20  his pragma,.    
7cf0: 79 6f 75 20 63 61 6e 20 73 65 74 20 74 68 65 20  you can set the 
7d00: 63 61 63 68 65 20 73 69 7a 65 20 6f 6e 63 65 20  cache size once 
7d10: 61 6e 64 20 74 68 61 74 20 73 65 74 74 69 6e 67  and that setting
7d20: 20 69 73 20 72 65 74 61 69 6e 65 64 20 61 6e 64   is retained and
7d30: 20 72 65 75 73 65 64 0a 20 20 20 20 65 76 65 72   reused.    ever
7d40: 79 74 69 6d 65 20 79 6f 75 20 72 65 6f 70 65 6e  ytime you reopen
7d50: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 3c 2f   the database.</
7d60: 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e  p></li>..<li><p>
7d70: 3c 62 3e 50 52 41 47 4d 41 20 64 65 66 61 75 6c  <b>PRAGMA defaul
7d80: 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 3b 0a 20  t_synchronous;. 
7d90: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
7da0: 20 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f   default_synchro
7db0: 6e 6f 75 73 20 3d 20 4f 4e 3b 0a 20 20 20 20 20  nous = ON;.     
7dc0: 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66    <br>PRAGMA def
7dd0: 61 75 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73  ault_synchronous
7de0: 20 3d 20 4f 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a   = OFF;</b></p>.
7df0: 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20      <p>Query or 
7e00: 63 68 61 6e 67 65 20 74 68 65 20 73 65 74 74 69  change the setti
7e10: 6e 67 20 6f 66 20 74 68 65 20 22 73 79 6e 63 68  ng of the "synch
7e20: 72 6f 6e 6f 75 73 22 20 66 6c 61 67 20 69 6e 0a  ronous" flag in.
7e30: 20 20 20 20 74 68 65 20 64 61 74 61 62 61 73 65      the database
7e40: 2e 20 20 57 68 65 6e 20 73 79 6e 63 68 72 6f 6e  .  When synchron
7e50: 6f 75 73 20 69 73 20 6f 6e 20 28 74 68 65 20 64  ous is on (the d
7e60: 65 66 61 75 6c 74 29 2c 20 74 68 65 20 53 51 4c  efault), the SQL
7e70: 69 74 65 20 64 61 74 61 62 61 73 65 0a 20 20 20  ite database.   
7e80: 20 65 6e 67 69 6e 65 20 77 69 6c 6c 20 70 61 75   engine will pau
7e90: 73 65 20 61 74 20 63 72 69 74 69 63 61 6c 20 6d  se at critical m
7ea0: 6f 6d 65 6e 74 73 20 74 6f 20 6d 61 6b 65 20 73  oments to make s
7eb0: 75 72 65 20 74 68 61 74 20 64 61 74 61 20 68 61  ure that data ha
7ec0: 73 20 61 63 74 75 61 6c 6c 79 0a 20 20 20 20 62  s actually.    b
7ed0: 65 20 77 72 69 74 74 65 6e 20 74 6f 20 74 68 65  e written to the
7ee0: 20 64 69 73 6b 20 73 75 72 66 61 63 65 2e 20 20   disk surface.  
7ef0: 28 49 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c  (In other words,
7f00: 20 69 74 20 69 6e 76 6f 6b 65 73 20 74 68 65 0a   it invokes the.
7f10: 20 20 20 20 65 71 75 69 76 61 6c 65 6e 74 20 6f      equivalent o
7f20: 66 20 74 68 65 20 3c 62 3e 66 73 79 6e 63 28 29  f the <b>fsync()
7f30: 3c 2f 62 3e 20 73 79 73 74 65 6d 20 63 61 6c 6c  </b> system call
7f40: 2e 29 20 20 49 6e 20 73 79 6e 63 68 72 6f 6e 6f  .)  In synchrono
7f50: 75 73 20 6d 6f 64 65 2c 0a 20 20 20 20 61 6e 20  us mode,.    an 
7f60: 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65 20  SQLite database 
7f70: 73 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79 20  should be fully 
7f80: 72 65 63 6f 76 65 72 61 62 6c 65 20 65 76 65 6e  recoverable even
7f90: 20 69 66 20 74 68 65 20 6f 70 65 72 61 74 69 6e   if the operatin
7fa0: 67 0a 20 20 20 20 73 79 73 74 65 6d 20 63 72 61  g.    system cra
7fb0: 73 68 65 73 20 6f 72 20 70 6f 77 65 72 20 69 73  shes or power is
7fc0: 20 69 6e 74 65 72 72 75 70 74 65 64 20 75 6e 65   interrupted une
7fd0: 78 70 65 63 74 65 64 6c 79 2e 20 20 54 68 65 20  xpectedly.  The 
7fe0: 70 65 6e 61 6c 74 79 20 66 6f 72 0a 20 20 20 20  penalty for.    
7ff0: 74 68 69 73 20 61 73 73 75 72 61 6e 63 65 20 69  this assurance i
8000: 73 20 74 68 61 74 20 73 6f 6d 65 20 64 61 74 61  s that some data
8010: 62 61 73 65 20 6f 70 65 72 61 74 69 6f 6e 73 20  base operations 
8020: 74 61 6b 65 20 6c 6f 6e 67 65 72 20 62 65 63 61  take longer beca
8030: 75 73 65 20 74 68 65 0a 20 20 20 20 65 6e 67 69  use the.    engi
8040: 6e 65 20 68 61 73 20 74 6f 20 77 61 69 74 20 6f  ne has to wait o
8050: 6e 20 74 68 65 20 28 72 65 6c 61 74 69 76 65 6c  n the (relativel
8060: 79 20 73 6c 6f 77 29 20 64 69 73 6b 20 64 72 69  y slow) disk dri
8070: 76 65 2e 20 20 54 68 65 20 61 6c 74 65 72 6e 61  ve.  The alterna
8080: 74 69 76 65 0a 20 20 20 20 69 73 20 74 6f 20 74  tive.    is to t
8090: 75 72 6e 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20  urn synchronous 
80a0: 6f 66 66 2e 20 20 57 69 74 68 20 73 79 6e 63 68  off.  With synch
80b0: 72 6f 6e 6f 75 73 20 6f 66 66 2c 20 53 51 4c 69  ronous off, SQLi
80c0: 74 65 20 63 6f 6e 74 69 6e 75 65 73 0a 20 20 20  te continues.   
80d0: 20 70 72 6f 63 65 73 73 69 6e 67 20 61 73 20 73   processing as s
80e0: 6f 6f 6e 20 61 73 20 69 74 20 68 61 73 20 68 61  oon as it has ha
80f0: 6e 64 65 64 20 64 61 74 61 20 6f 66 66 20 74 6f  nded data off to
8100: 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73   the operating s
8110: 79 73 74 65 6d 2e 0a 20 20 20 20 49 66 20 74 68  ystem..    If th
8120: 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 72 75  e application ru
8130: 6e 6e 69 6e 67 20 53 51 4c 69 74 65 20 63 72 61  nning SQLite cra
8140: 73 68 65 73 2c 20 74 68 65 20 64 61 74 61 20 77  shes, the data w
8150: 69 6c 6c 20 62 65 20 73 61 66 65 2c 20 62 75 74  ill be safe, but
8160: 0a 20 20 20 20 74 68 65 20 64 61 74 61 62 61 73  .    the databas
8170: 65 20 63 6f 75 6c 64 20 28 69 6e 20 74 68 65 6f  e could (in theo
8180: 72 79 29 20 62 65 63 6f 6d 65 20 63 6f 72 72 75  ry) become corru
8190: 70 74 65 64 20 69 66 20 74 68 65 20 6f 70 65 72  pted if the oper
81a0: 61 74 69 6e 67 20 73 79 73 74 65 6d 0a 20 20 20  ating system.   
81b0: 20 63 72 61 73 68 65 73 20 6f 72 20 74 68 65 20   crashes or the 
81c0: 63 6f 6d 70 75 74 65 72 20 73 75 64 64 65 6e 6c  computer suddenl
81d0: 79 20 6c 6f 73 65 73 20 70 6f 77 65 72 2e 20 20  y loses power.  
81e0: 4f 6e 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e  On the other han
81f0: 64 2c 20 73 6f 6d 65 0a 20 20 20 20 6f 70 65 72  d, some.    oper
8200: 61 74 69 6f 6e 73 20 61 72 65 20 61 73 20 6d 75  ations are as mu
8210: 63 68 20 61 73 20 35 30 20 6f 72 20 6d 6f 72 65  ch as 50 or more
8220: 20 74 69 6d 65 73 20 66 61 73 74 65 72 20 77 69   times faster wi
8230: 74 68 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 6f  th synchronous o
8240: 66 66 2e 0a 20 20 20 20 3c 2f 70 3e 0a 20 20 20  ff..    </p>.   
8250: 20 3c 70 3e 54 68 69 73 20 70 72 61 67 6d 61 20   <p>This pragma 
8260: 63 68 61 6e 67 65 73 20 74 68 65 20 73 79 6e 63  changes the sync
8270: 68 72 6f 6e 6f 75 73 20 6d 6f 64 65 20 70 65 72  hronous mode per
8280: 73 69 73 74 65 6e 74 6c 79 2e 20 20 4f 6e 63 65  sistently.  Once
8290: 20 63 68 61 6e 67 65 64 2c 0a 20 20 20 20 74 68   changed,.    th
82a0: 65 20 6d 6f 64 65 20 73 74 61 79 73 20 61 73 20  e mode stays as 
82b0: 73 65 74 20 65 76 65 6e 20 69 66 20 74 68 65 20  set even if the 
82c0: 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73  database is clos
82d0: 65 64 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e  ed and reopened.
82e0: 20 20 54 68 65 0a 20 20 20 20 3c 62 3e 73 79 6e    The.    <b>syn
82f0: 63 68 72 6f 6e 6f 75 73 3c 2f 62 3e 20 70 72 61  chronous</b> pra
8300: 67 6d 61 20 64 6f 65 73 20 74 68 65 20 73 61 6d  gma does the sam
8310: 65 20 74 68 69 6e 67 20 62 75 74 20 6f 6e 6c 79  e thing but only
8320: 20 61 70 70 6c 69 65 73 20 74 68 65 20 73 65 74   applies the set
8330: 74 69 6e 67 0a 20 20 20 20 74 6f 20 74 68 65 20  ting.    to the 
8340: 63 75 72 72 65 6e 74 20 73 65 73 73 69 6f 6e 2e  current session.
8350: 3c 2f 70 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e  </p>..<li><p><b>
8360: 50 52 41 47 4d 41 20 65 6d 70 74 79 5f 72 65 73  PRAGMA empty_res
8370: 75 6c 74 5f 63 61 6c 6c 62 61 63 6b 73 20 3d 20  ult_callbacks = 
8380: 4f 4e 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50  ON;.       <br>P
8390: 52 41 47 4d 41 20 65 6d 70 74 79 5f 72 65 73 75  RAGMA empty_resu
83a0: 6c 74 5f 63 61 6c 6c 62 61 63 6b 73 20 3d 20 4f  lt_callbacks = O
83b0: 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  FF;</b></p>.    
83c0: 3c 70 3e 57 68 65 6e 20 6f 6e 2c 20 74 68 65 20  <p>When on, the 
83d0: 45 4d 50 54 59 5f 52 45 53 55 4c 54 5f 43 41 4c  EMPTY_RESULT_CAL
83e0: 4c 42 41 43 4b 53 20 70 72 61 67 6d 61 20 63 61  LBACKS pragma ca
83f0: 75 73 65 73 20 74 68 65 20 63 61 6c 6c 62 61 63  uses the callbac
8400: 6b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74  k.    function t
8410: 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20 6f 6e 63  o be invoked onc
8420: 65 20 66 6f 72 20 65 61 63 68 20 71 75 65 72 79  e for each query
8430: 20 74 68 61 74 20 68 61 73 20 61 6e 20 65 6d 70   that has an emp
8440: 74 79 20 72 65 73 75 6c 74 0a 20 20 20 20 73 65  ty result.    se
8450: 74 2e 20 20 54 68 65 20 74 68 69 72 64 20 22 3c  t.  The third "<
8460: 62 3e 61 72 67 76 3c 2f 62 3e 22 20 70 61 72 61  b>argv</b>" para
8470: 6d 65 74 65 72 20 74 6f 20 74 68 65 20 63 61 6c  meter to the cal
8480: 6c 62 61 63 6b 20 69 73 20 73 65 74 20 74 6f 20  lback is set to 
8490: 4e 55 4c 4c 0a 20 20 20 20 62 65 63 61 75 73 65  NULL.    because
84a0: 20 74 68 65 72 65 20 69 73 20 6e 6f 20 64 61 74   there is no dat
84b0: 61 20 74 6f 20 72 65 70 6f 72 74 2e 20 20 42 75  a to report.  Bu
84c0: 74 20 74 68 65 20 73 65 63 6f 6e 64 20 22 3c 62  t the second "<b
84d0: 3e 61 72 67 63 3c 2f 62 3e 22 20 61 6e 64 0a 20  >argc</b>" and. 
84e0: 20 20 20 66 6f 75 72 74 68 20 22 3c 62 3e 63 6f     fourth "<b>co
84f0: 6c 75 6d 6e 4e 61 6d 65 73 3c 2f 62 3e 22 20 70  lumnNames</b>" p
8500: 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 76 61  arameters are va
8510: 6c 69 64 20 61 6e 64 20 63 61 6e 20 62 65 20 75  lid and can be u
8520: 73 65 64 20 74 6f 0a 20 20 20 20 64 65 74 65 72  sed to.    deter
8530: 6d 69 6e 65 20 74 68 65 20 6e 75 6d 62 65 72 20  mine the number 
8540: 61 6e 64 20 6e 61 6d 65 73 20 6f 66 20 74 68 65  and names of the
8550: 20 63 6f 6c 75 6d 6e 73 20 74 68 61 74 20 77 6f   columns that wo
8560: 75 6c 64 20 68 61 76 65 20 62 65 65 6e 20 69 6e  uld have been in
8570: 0a 20 20 20 20 74 68 65 20 72 65 73 75 6c 74 20  .    the result 
8580: 73 65 74 20 68 61 64 20 74 68 65 20 73 65 74 20  set had the set 
8590: 6e 6f 74 20 62 65 65 6e 20 65 6d 70 74 79 2e 3c  not been empty.<
85a0: 2f 70 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  /p>..<li><p><b>P
85b0: 52 41 47 4d 41 20 66 75 6c 6c 5f 63 6f 6c 75 6d  RAGMA full_colum
85c0: 6e 5f 6e 61 6d 65 73 20 3d 20 4f 4e 3b 0a 20 20  n_names = ON;.  
85d0: 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20       <br>PRAGMA 
85e0: 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65  full_column_name
85f0: 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e 3c 2f 70 3e  s = OFF;</b></p>
8600: 0a 20 20 20 20 3c 70 3e 54 68 65 20 63 6f 6c 75  .    <p>The colu
8610: 6d 6e 20 6e 61 6d 65 73 20 72 65 70 6f 72 74 65  mn names reporte
8620: 64 20 69 6e 20 61 6e 20 53 51 4c 69 74 65 20 63  d in an SQLite c
8630: 61 6c 6c 62 61 63 6b 20 61 72 65 20 6e 6f 72 6d  allback are norm
8640: 61 6c 6c 79 20 6a 75 73 74 0a 20 20 20 20 74 68  ally just.    th
8650: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f  e name of the co
8660: 6c 75 6d 6e 20 69 74 73 65 6c 66 2c 20 65 78 63  lumn itself, exc
8670: 65 70 74 20 66 6f 72 20 6a 6f 69 6e 73 20 77 68  ept for joins wh
8680: 65 6e 20 22 54 41 42 4c 45 2e 43 4f 4c 55 4d 4e  en "TABLE.COLUMN
8690: 22 0a 20 20 20 20 69 73 20 75 73 65 64 2e 20 20  ".    is used.  
86a0: 42 75 74 20 77 68 65 6e 20 66 75 6c 6c 5f 63 6f  But when full_co
86b0: 6c 75 6d 6e 5f 6e 61 6d 65 73 20 69 73 20 74 75  lumn_names is tu
86c0: 72 6e 65 64 20 6f 6e 2c 20 63 6f 6c 75 6d 6e 20  rned on, column 
86d0: 6e 61 6d 65 73 20 61 72 65 0a 20 20 20 20 61 6c  names are.    al
86e0: 77 61 79 73 20 72 65 70 6f 72 74 65 64 20 61 73  ways reported as
86f0: 20 22 54 41 42 4c 45 2e 43 4f 4c 55 4d 4e 22 20   "TABLE.COLUMN" 
8700: 65 76 65 6e 20 66 6f 72 20 73 69 6d 70 6c 65 20  even for simple 
8710: 71 75 65 72 69 65 73 2e 3c 2f 70 3e 3c 2f 6c 69  queries.</p></li
8720: 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  >..<li><p><b>PRA
8730: 47 4d 41 20 69 6e 64 65 78 5f 69 6e 66 6f 28 3c  GMA index_info(<
8740: 2f 62 3e 3c 69 3e 69 6e 64 65 78 2d 6e 61 6d 65  /b><i>index-name
8750: 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70  </i><b>);</b></p
8760: 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63  >.    <p>For eac
8770: 68 20 63 6f 6c 75 6d 6e 20 74 68 61 74 20 74 68  h column that th
8780: 65 20 6e 61 6d 65 64 20 69 6e 64 65 78 20 72 65  e named index re
8790: 66 65 72 65 6e 63 65 73 2c 20 69 6e 76 6f 6b 65  ferences, invoke
87a0: 20 74 68 65 20 0a 20 20 20 20 63 61 6c 6c 62 61   the .    callba
87b0: 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20  ck function.    
87c0: 6f 6e 63 65 20 77 69 74 68 20 69 6e 66 6f 72 6d  once with inform
87d0: 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 61 74  ation about that
87e0: 20 63 6f 6c 75 6d 6e 2c 20 69 6e 63 6c 75 64 69   column, includi
87f0: 6e 67 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61  ng the column na
8800: 6d 65 2c 0a 20 20 20 20 61 6e 64 20 74 68 65 20  me,.    and the 
8810: 63 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 2e 3c 2f  column number.</
8820: 70 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52  p>..<li><p><b>PR
8830: 41 47 4d 41 20 69 6e 64 65 78 5f 6c 69 73 74 28  AGMA index_list(
8840: 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d  </b><i>table-nam
8850: 65 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f  e</i><b>);</b></
8860: 70 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65 61  p>.    <p>For ea
8870: 63 68 20 69 6e 64 65 78 20 6f 6e 20 74 68 65 20  ch index on the 
8880: 6e 61 6d 65 64 20 74 61 62 6c 65 2c 20 69 6e 76  named table, inv
8890: 6f 6b 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b  oke the callback
88a0: 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e   function.    on
88b0: 63 65 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74  ce with informat
88c0: 69 6f 6e 20 61 62 6f 75 74 20 74 68 61 74 20 69  ion about that i
88d0: 6e 64 65 78 2e 20 20 41 72 67 75 6d 65 6e 74 73  ndex.  Arguments
88e0: 20 69 6e 63 6c 75 64 65 20 74 68 65 0a 20 20 20   include the.   
88f0: 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64 20   index name and 
8900: 61 20 66 6c 61 67 20 74 6f 20 69 6e 64 69 63 61  a flag to indica
8910: 74 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f  te whether or no
8920: 74 20 74 68 65 20 69 6e 64 65 78 20 6d 75 73 74  t the index must
8930: 20 62 65 0a 20 20 20 20 75 6e 69 71 75 65 2e 3c   be.    unique.<
8940: 2f 70 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  /p>..<li><p><b>P
8950: 52 41 47 4d 41 20 70 61 72 73 65 72 5f 74 72 61  RAGMA parser_tra
8960: 63 65 20 3d 20 4f 4e 3b 3c 62 72 3e 50 52 41 47  ce = ON;<br>PRAG
8970: 4d 41 20 70 61 72 73 65 72 5f 74 72 61 63 65 20  MA parser_trace 
8980: 3d 20 4f 46 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20  = OFF;</b></p>. 
8990: 20 20 20 3c 70 3e 54 75 72 6e 20 74 72 61 63 69     <p>Turn traci
89a0: 6e 67 20 6f 66 20 74 68 65 20 53 51 4c 20 70 61  ng of the SQL pa
89b0: 72 73 65 72 20 69 6e 73 69 64 65 20 6f 66 20 74  rser inside of t
89c0: 68 65 0a 20 20 20 20 53 51 4c 69 74 65 20 6c 69  he.    SQLite li
89d0: 62 72 61 72 79 20 6f 6e 20 61 6e 64 20 6f 66 66  brary on and off
89e0: 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 64 20  .  This is used 
89f0: 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0a 20  for debugging.. 
8a00: 20 20 20 54 68 69 73 20 6f 6e 6c 79 20 77 6f 72     This only wor
8a10: 6b 73 20 69 66 20 74 68 65 20 6c 69 62 72 61 72  ks if the librar
8a20: 79 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 77 69  y is compiled wi
8a30: 74 68 6f 75 74 20 74 68 65 20 4e 44 45 42 55 47  thout the NDEBUG
8a40: 20 6d 61 63 72 6f 2e 0a 20 20 20 20 3c 2f 70 3e   macro..    </p>
8a50: 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62  </li>..<li><p><b
8a60: 3e 50 52 41 47 4d 41 20 69 6e 74 65 67 72 69 74  >PRAGMA integrit
8a70: 79 5f 63 68 65 63 6b 3b 3c 2f 62 3e 3c 2f 70 3e  y_check;</b></p>
8a80: 0a 20 20 20 20 3c 70 3e 54 68 65 20 63 6f 6d 6d  .    <p>The comm
8a90: 61 6e 64 20 64 6f 65 73 20 61 6e 20 69 6e 74 65  and does an inte
8aa0: 67 72 69 74 79 20 63 68 65 63 6b 20 6f 66 20 74  grity check of t
8ab0: 68 65 20 65 6e 74 69 72 65 20 64 61 74 61 62 61  he entire databa
8ac0: 73 65 2e 20 20 49 74 0a 20 20 20 20 6c 6f 6f 6b  se.  It.    look
8ad0: 73 20 66 6f 72 20 6f 75 74 2d 6f 66 2d 6f 72 64  s for out-of-ord
8ae0: 65 72 20 72 65 63 6f 72 64 73 2c 20 6d 69 73 73  er records, miss
8af0: 69 6e 67 20 70 61 67 65 73 2c 20 61 6e 64 20 6d  ing pages, and m
8b00: 61 6c 66 6f 72 6d 65 64 20 72 65 63 6f 72 64 73  alformed records
8b10: 2e 0a 20 20 20 20 49 66 20 61 6e 79 20 70 72 6f  ..    If any pro
8b20: 62 6c 65 6d 73 20 61 72 65 20 66 6f 75 6e 64 2c  blems are found,
8b30: 20 74 68 65 6e 20 61 20 73 69 6e 67 6c 65 20 73   then a single s
8b40: 74 72 69 6e 67 20 69 73 20 72 65 74 75 72 6e 65  tring is returne
8b50: 64 20 77 68 69 63 68 20 69 73 0a 20 20 20 20 61  d which is.    a
8b60: 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20   description of 
8b70: 61 6c 6c 20 70 72 6f 62 6c 65 6d 73 2e 20 20 49  all problems.  I
8b80: 66 20 65 76 65 72 79 74 68 69 6e 67 20 69 73 20  f everything is 
8b90: 69 6e 20 6f 72 64 65 72 2c 20 22 6f 6b 22 20 69  in order, "ok" i
8ba0: 73 0a 20 20 20 20 72 65 74 75 72 6e 65 64 2e 3c  s.    returned.<
8bb0: 2f 70 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  /p>..<li><p><b>P
8bc0: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
8bd0: 73 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52  s;.       <br>PR
8be0: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
8bf0: 20 3d 20 4f 4e 3b 0a 20 20 20 20 20 20 20 3c 62   = ON;.       <b
8c00: 72 3e 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f  r>PRAGMA synchro
8c10: 6e 6f 75 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e 3c  nous = OFF;</b><
8c20: 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79  /p>.    <p>Query
8c30: 20 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 73   or change the s
8c40: 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20 22 73  etting of the "s
8c50: 79 6e 63 68 72 6f 6e 6f 75 73 22 20 66 6c 61 67  ynchronous" flag
8c60: 20 69 6e 0a 20 20 20 20 74 68 65 20 64 61 74 61   in.    the data
8c70: 62 61 73 65 20 66 6f 72 20 74 68 65 20 64 75 72  base for the dur
8c80: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 75 72  ation of the cur
8c90: 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f  rent database co
8ca0: 6e 6e 65 63 74 2e 0a 20 20 20 20 54 68 65 20 73  nnect..    The s
8cb0: 79 6e 63 68 72 6f 6e 6f 75 73 20 66 6c 61 67 20  ynchronous flag 
8cc0: 72 65 76 65 72 74 73 20 74 6f 20 69 74 73 20 64  reverts to its d
8cd0: 65 66 61 75 6c 74 20 76 61 6c 75 65 20 77 68 65  efault value whe
8ce0: 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 20  n the database. 
8cf0: 20 20 20 69 73 20 63 6c 6f 73 65 64 20 61 6e 64     is closed and
8d00: 20 72 65 6f 70 65 6e 65 64 2e 20 20 46 6f 72 20   reopened.  For 
8d10: 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
8d20: 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 73 79  mation on the sy
8d30: 6e 63 68 72 6f 6e 6f 75 73 0a 20 20 20 20 66 6c  nchronous.    fl
8d40: 61 67 2c 20 73 65 65 20 74 68 65 20 64 65 73 63  ag, see the desc
8d50: 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c  ription of the <
8d60: 62 3e 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72  b>default_synchr
8d70: 6f 6e 6f 75 73 3c 2f 62 3e 20 70 72 61 67 6d 61  onous</b> pragma
8d80: 2e 3c 2f 70 3e 0a 20 20 20 20 3c 2f 6c 69 3e 0a  .</p>.    </li>.
8d90: 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d  .<li><p><b>PRAGM
8da0: 41 20 74 61 62 6c 65 5f 69 6e 66 6f 28 3c 2f 62  A table_info(</b
8db0: 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f  ><i>table-name</
8dc0: 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a  i><b>);</b></p>.
8dd0: 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63 68 20      <p>For each 
8de0: 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 6e 61  column in the na
8df0: 6d 65 64 20 74 61 62 6c 65 2c 20 69 6e 76 6f 6b  med table, invok
8e00: 65 20 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66  e the callback f
8e10: 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65  unction.    once
8e20: 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f   with informatio
8e30: 6e 20 61 62 6f 75 74 20 74 68 61 74 20 63 6f 6c  n about that col
8e40: 75 6d 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74  umn, including t
8e50: 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a  he column name,.
8e60: 20 20 20 20 64 61 74 61 20 74 79 70 65 2c 20 77      data type, w
8e70: 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74 68  hether or not th
8e80: 65 20 63 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20  e column can be 
8e90: 4e 55 4c 4c 2c 20 61 6e 64 20 74 68 65 20 64 65  NULL, and the de
8ea0: 66 61 75 6c 74 0a 20 20 20 20 76 61 6c 75 65 20  fault.    value 
8eb0: 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 3c  for the column.<
8ec0: 2f 70 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  /p>..<li><p><b>P
8ed0: 52 41 47 4d 41 20 76 64 62 65 5f 74 72 61 63 65  RAGMA vdbe_trace
8ee0: 20 3d 20 4f 4e 3b 3c 62 72 3e 50 52 41 47 4d 41   = ON;<br>PRAGMA
8ef0: 20 76 64 62 65 5f 74 72 61 63 65 20 3d 20 4f 46   vdbe_trace = OF
8f00: 46 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  F;</b></p>.    <
8f10: 70 3e 54 75 72 6e 20 74 72 61 63 69 6e 67 20 6f  p>Turn tracing o
8f20: 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 64 61  f the virtual da
8f30: 74 61 62 61 73 65 20 65 6e 67 69 6e 65 20 69 6e  tabase engine in
8f40: 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20 20 20  side of the.    
8f50: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f  SQLite library o
8f60: 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68 69 73  n and off.  This
8f70: 20 69 73 20 75 73 65 64 20 66 6f 72 20 64 65 62   is used for deb
8f80: 75 67 67 69 6e 67 2e 3c 2f 70 3e 3c 2f 6c 69 3e  ugging.</p></li>
8f90: 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e 4e 6f 20 65 72  .</ul>..<p>No er
8fa0: 72 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20 67  ror message is g
8fb0: 65 6e 65 72 61 74 65 64 20 69 66 20 61 6e 20 75  enerated if an u
8fc0: 6e 6b 6e 6f 77 6e 20 70 72 61 67 6d 61 20 69 73  nknown pragma is
8fd0: 20 69 73 73 75 65 64 2e 0a 55 6e 6b 6e 6f 77 6e   issued..Unknown
8fe0: 20 70 72 61 67 6d 61 73 20 61 72 65 20 69 67 6e   pragmas are ign
8ff0: 6f 72 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63  ored.</p>.}..Sec
9000: 74 69 6f 6e 20 52 45 50 4c 41 43 45 20 72 65 70  tion REPLACE rep
9010: 6c 61 63 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71  lace..Syntax {sq
9020: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52  l-statement} {.R
9030: 45 50 4c 41 43 45 20 49 4e 54 4f 20 3c 74 61 62  EPLACE INTO <tab
9040: 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c  le-name> [( <col
9050: 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 56 41 4c  umn-list> )] VAL
9060: 55 45 53 20 28 20 3c 76 61 6c 75 65 2d 6c 69 73  UES ( <value-lis
9070: 74 3e 20 29 20 7c 0a 52 45 50 4c 41 43 45 20 49  t> ) |.REPLACE I
9080: 4e 54 4f 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  NTO <table-name>
9090: 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74   [( <column-list
90a0: 3e 20 29 5d 20 3c 73 65 6c 65 63 74 2d 73 74 61  > )] <select-sta
90b0: 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20  tement>.}..puts 
90c0: 7b 0a 3c 70 3e 54 68 65 20 52 45 50 4c 41 43 45  {.<p>The REPLACE
90d0: 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 61   command is an a
90e0: 6c 69 61 73 20 66 6f 72 20 74 68 65 20 22 49 4e  lias for the "IN
90f0: 53 45 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22  SERT OR REPLACE"
9100: 20 76 61 72 69 61 6e 74 0a 6f 66 20 74 68 65 20   variant.of the 
9110: 3c 61 20 68 72 65 66 3d 22 23 69 6e 73 65 72 74  <a href="#insert
9120: 22 3e 49 4e 53 45 52 54 20 63 6f 6d 6d 61 6e 64  ">INSERT command
9130: 3c 2f 61 3e 2e 20 20 54 68 69 73 20 61 6c 69 61  </a>.  This alia
9140: 73 20 69 73 20 70 72 6f 76 69 64 65 64 20 66 6f  s is provided fo
9150: 72 0a 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20  r.compatibility 
9160: 77 69 74 68 20 4d 79 53 51 4c 2e 20 20 53 65 65  with MySQL.  See
9170: 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 23   the .<a href="#
9180: 69 6e 73 65 72 74 22 3e 49 4e 53 45 52 54 20 63  insert">INSERT c
9190: 6f 6d 6d 61 6e 64 3c 2f 61 3e 20 64 6f 63 75 6d  ommand</a> docum
91a0: 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64  entation for add
91b0: 69 74 69 6f 6e 61 6c 0a 69 6e 66 6f 72 6d 61 74  itional.informat
91c0: 69 6f 6e 2e 3c 2f 70 3e 20 20 0a 7d 0a 0a 53 65  ion.</p>  .}..Se
91d0: 63 74 69 6f 6e 20 53 45 4c 45 43 54 20 73 65 6c  ction SELECT sel
91e0: 65 63 74 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ect..Syntax {sql
91f0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 53 45  -statement} {.SE
9200: 4c 45 43 54 20 3c 72 65 73 75 6c 74 3e 20 5b 46  LECT <result> [F
9210: 52 4f 4d 20 3c 74 61 62 6c 65 2d 6c 69 73 74 3e  ROM <table-list>
9220: 5d 0a 5b 57 48 45 52 45 20 3c 65 78 70 72 3e 5d  ].[WHERE <expr>]
9230: 0a 5b 47 52 4f 55 50 20 42 59 20 3c 65 78 70 72  .[GROUP BY <expr
9240: 2d 6c 69 73 74 3e 5d 0a 5b 48 41 56 49 4e 47 20  -list>].[HAVING 
9250: 3c 65 78 70 72 3e 5d 0a 5b 3c 63 6f 6d 70 6f 75  <expr>].[<compou
9260: 6e 64 2d 6f 70 3e 20 3c 73 65 6c 65 63 74 3e 5d  nd-op> <select>]
9270: 2a 0a 5b 4f 52 44 45 52 20 42 59 20 3c 73 6f 72  *.[ORDER BY <sor
9280: 74 2d 65 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b 4c  t-expr-list>].[L
9290: 49 4d 49 54 20 3c 69 6e 74 65 67 65 72 3e 20 5b  IMIT <integer> [
92a0: 4f 46 46 53 45 54 20 3c 69 6e 74 65 67 65 72 3e  OFFSET <integer>
92b0: 5d 5d 0a 7d 20 7b 72 65 73 75 6c 74 7d 20 7b 0a  ]].} {result} {.
92c0: 3c 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 3e 20  <result-column> 
92d0: 5b 2c 20 3c 72 65 73 75 6c 74 2d 63 6f 6c 75 6d  [, <result-colum
92e0: 6e 3e 5d 2a 0a 7d 20 7b 72 65 73 75 6c 74 2d 63  n>]*.} {result-c
92f0: 6f 6c 75 6d 6e 7d 20 7b 0a 53 54 41 52 20 7c 20  olumn} {.STAR | 
9300: 3c 65 78 70 72 3e 20 5b 20 5b 41 53 5d 20 3c 73  <expr> [ [AS] <s
9310: 74 72 69 6e 67 3e 20 5d 0a 7d 20 7b 74 61 62 6c  tring> ].} {tabl
9320: 65 2d 6c 69 73 74 7d 20 7b 0a 3c 74 61 62 6c 65  e-list} {.<table
9330: 3e 20 5b 2c 20 3c 74 61 62 6c 65 3e 5d 2a 0a 7d  > [, <table>]*.}
9340: 20 7b 74 61 62 6c 65 7d 20 7b 0a 3c 74 61 62 6c   {table} {.<tabl
9350: 65 2d 6e 61 6d 65 3e 20 5b 41 53 20 3c 61 6c 69  e-name> [AS <ali
9360: 61 73 3e 5d 20 7c 0a 28 20 3c 73 65 6c 65 63 74  as>] |.( <select
9370: 3e 20 29 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d  > ) [AS <alias>]
9380: 0a 7d 20 7b 73 6f 72 74 2d 65 78 70 72 2d 6c 69  .} {sort-expr-li
9390: 73 74 7d 20 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73  st} {.<expr> [<s
93a0: 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c  ort-order>] [, <
93b0: 65 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64  expr> [<sort-ord
93c0: 65 72 3e 5d 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f  er>]]*.} {sort-o
93d0: 72 64 65 72 7d 20 7b 0a 41 53 43 20 7c 20 44 45  rder} {.ASC | DE
93e0: 53 43 0a 7d 20 7b 63 6f 6d 70 6f 75 6e 64 5f 6f  SC.} {compound_o
93f0: 70 7d 20 7b 0a 55 4e 49 4f 4e 20 7c 20 55 4e 49  p} {.UNION | UNI
9400: 4f 4e 20 41 4c 4c 20 7c 20 49 4e 54 45 52 53 45  ON ALL | INTERSE
9410: 43 54 20 7c 20 45 58 43 45 50 54 0a 7d 0a 0a 70  CT | EXCEPT.}..p
9420: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53 45 4c  uts {.<p>The SEL
9430: 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 69 73  ECT statement is
9440: 20 75 73 65 64 20 74 6f 20 71 75 65 72 79 20 74   used to query t
9450: 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 54 68  he database.  Th
9460: 65 0a 72 65 73 75 6c 74 20 6f 66 20 61 20 53 45  e.result of a SE
9470: 4c 45 43 54 20 69 73 20 7a 65 72 6f 20 6f 72 20  LECT is zero or 
9480: 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64 61 74  more rows of dat
9490: 61 20 77 68 65 72 65 20 65 61 63 68 20 72 6f 77  a where each row
94a0: 0a 68 61 73 20 61 20 66 69 78 65 64 20 6e 75 6d  .has a fixed num
94b0: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e 20  ber of columns. 
94c0: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   The number of c
94d0: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a 72 65  olumns in the.re
94e0: 73 75 6c 74 20 69 73 20 73 70 65 63 69 66 69 65  sult is specifie
94f0: 64 20 62 79 20 74 68 65 20 65 78 70 72 65 73 73  d by the express
9500: 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65 74 77  ion list in betw
9510: 65 65 6e 20 74 68 65 0a 53 45 4c 45 43 54 20 61  een the.SELECT a
9520: 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64 73  nd FROM keywords
9530: 2e 20 20 41 6e 79 20 61 72 62 69 74 72 61 72 79  .  Any arbitrary
9540: 20 65 78 70 72 65 73 73 69 6f 6e 20 63 61 6e 20   expression can 
9550: 62 65 20 75 73 65 64 0a 61 73 20 61 20 72 65 73  be used.as a res
9560: 75 6c 74 2e 20 20 49 66 20 61 20 72 65 73 75 6c  ult.  If a resul
9570: 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20  t expression is 
9580: 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72 61 74 6f  }.puts "[Operato
9590: 72 20 2a 5d 20 74 68 65 6e 20 61 6c 6c 20 63 6f  r *] then all co
95a0: 6c 75 6d 6e 73 20 6f 66 20 61 6c 6c 20 74 61 62  lumns of all tab
95b0: 6c 65 73 20 61 72 65 20 73 75 62 73 74 69 74 75  les are substitu
95c0: 74 65 64 22 0a 70 75 74 73 20 7b 66 6f 72 20 74  ted".puts {for t
95d0: 68 61 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69  hat one expressi
95e0: 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  on.</p>..<p>The 
95f0: 71 75 65 72 79 20 69 73 20 65 78 65 63 75 74 65  query is execute
9600: 64 20 61 67 61 69 6e 20 6f 6e 65 20 6f 72 20 6d  d again one or m
9610: 6f 72 65 20 74 61 62 6c 65 73 20 73 70 65 63 69  ore tables speci
9620: 66 69 65 64 20 61 66 74 65 72 0a 74 68 65 20 46  fied after.the F
9630: 52 4f 4d 20 6b 65 79 77 6f 72 64 2e 20 20 49 66  ROM keyword.  If
9640: 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 74   more than one t
9650: 61 62 6c 65 20 69 73 20 73 70 65 63 69 66 69 65  able is specifie
9660: 64 2c 20 74 68 65 6e 20 74 68 65 0a 71 75 65 72  d, then the.quer
9670: 79 20 69 73 20 61 67 61 69 6e 73 74 20 74 68 65  y is against the
9680: 20 28 69 6e 6e 65 72 29 20 6a 6f 69 6e 20 6f 66   (inner) join of
9690: 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 61 62   the various tab
96a0: 6c 65 73 2e 20 20 41 20 73 75 62 2d 71 75 65 72  les.  A sub-quer
96b0: 79 0a 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73  y.in parentheses
96c0: 20 6d 61 79 20 62 65 20 73 75 62 73 74 69 74 75   may be substitu
96d0: 74 65 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c  ted for any tabl
96e0: 65 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52  e name in the FR
96f0: 4f 4d 20 63 6c 61 75 73 65 2e 0a 54 68 65 20 65  OM clause..The e
9700: 6e 74 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73  ntire FROM claus
9710: 65 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64  e may be omitted
9720: 2c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20  , in which case 
9730: 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a  the result is a.
9740: 73 69 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69  single row consi
9750: 73 74 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c  sting of the val
9760: 75 65 73 20 6f 66 20 74 68 65 20 65 78 70 72 65  ues of the expre
9770: 73 73 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e  ssion list..</p>
9780: 0a 0a 3c 70 3e 54 68 65 20 57 48 45 52 45 20 63  ..<p>The WHERE c
9790: 6c 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65  lause can be use
97a0: 64 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e  d to limit the n
97b0: 75 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76  umber of rows ov
97c0: 65 72 0a 77 68 69 63 68 20 74 68 65 20 71 75 65  er.which the que
97d0: 72 79 20 6f 70 65 72 61 74 65 73 2e 20 20 49 6e  ry operates.  In
97e0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 69 6d 70   the current imp
97f0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 2c 0a 69 6e 64  lementation,.ind
9800: 69 63 65 73 20 77 69 6c 6c 20 6f 6e 6c 79 20 62  ices will only b
9810: 65 20 75 73 65 64 20 74 6f 0a 6f 70 74 69 6d 69  e used to.optimi
9820: 7a 65 20 74 68 65 20 71 75 65 72 79 20 69 66 20  ze the query if 
9830: 57 48 45 52 45 20 65 78 70 72 65 73 73 69 6f 6e  WHERE expression
9840: 20 63 6f 6e 74 61 69 6e 73 20 65 71 75 61 6c 69   contains equali
9850: 74 79 20 63 6f 6d 70 61 72 69 73 6f 6e 73 0a 63  ty comparisons.c
9860: 6f 6e 6e 65 63 74 65 64 20 62 79 20 74 68 65 20  onnected by the 
9870: 41 4e 44 20 6f 70 65 72 61 74 6f 72 2e 3c 2f 70  AND operator.</p
9880: 3e 0a 0a 3c 70 3e 54 68 65 20 47 52 4f 55 50 20  >..<p>The GROUP 
9890: 42 59 20 63 6c 61 75 73 65 73 20 63 61 75 73 65  BY clauses cause
98a0: 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f  s one or more ro
98b0: 77 73 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  ws of the result
98c0: 20 74 6f 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20   to.be combined 
98d0: 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f  into a single ro
98e0: 77 20 6f 66 20 6f 75 74 70 75 74 2e 20 20 54 68  w of output.  Th
98f0: 69 73 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79  is is especially
9900: 20 75 73 65 66 75 6c 0a 77 68 65 6e 20 74 68 65   useful.when the
9910: 20 72 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73   result contains
9920: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
9930: 69 6f 6e 73 2e 20 20 54 68 65 20 65 78 70 72 65  ions.  The expre
9940: 73 73 69 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52  ssions in.the GR
9950: 4f 55 50 20 42 59 20 63 6c 61 75 73 65 20 64 6f  OUP BY clause do
9960: 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61   <em>not</em> ha
9970: 76 65 20 74 6f 20 62 65 20 65 78 70 72 65 73 73  ve to be express
9980: 69 6f 6e 73 20 74 68 61 74 0a 61 70 70 65 61 72  ions that.appear
9990: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20   in the result. 
99a0: 20 54 68 65 20 48 41 56 49 4e 47 20 63 6c 61 75   The HAVING clau
99b0: 73 65 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f  se is similar to
99c0: 20 57 48 45 52 45 20 65 78 63 65 70 74 0a 74 68   WHERE except.th
99d0: 61 74 20 48 41 56 49 4e 47 20 61 70 70 6c 69 65  at HAVING applie
99e0: 73 20 61 66 74 65 72 20 67 72 6f 75 70 69 6e 67  s after grouping
99f0: 20 68 61 73 20 6f 63 63 75 72 72 65 64 2e 20 20   has occurred.  
9a00: 54 68 65 20 48 41 56 49 4e 47 20 65 78 70 72 65  The HAVING expre
9a10: 73 73 69 6f 6e 0a 6d 61 79 20 72 65 66 65 72 20  ssion.may refer 
9a20: 74 6f 20 76 61 6c 75 65 73 2c 20 65 76 65 6e 20  to values, even 
9a30: 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
9a40: 6f 6e 73 2c 20 74 68 61 74 20 61 72 65 20 6e 6f  ons, that are no
9a50: 74 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e  t in the result.
9a60: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 52 44  </p>..<p>The ORD
9a70: 45 52 20 42 59 20 63 6c 61 75 73 65 20 63 61 75  ER BY clause cau
9a80: 73 65 73 20 74 68 65 20 6f 75 74 70 75 74 20 72  ses the output r
9a90: 6f 77 73 20 74 6f 20 62 65 20 73 6f 72 74 65 64  ows to be sorted
9aa0: 2e 20 20 0a 54 68 65 20 61 72 67 75 6d 65 6e 74  .  .The argument
9ab0: 20 74 6f 20 4f 52 44 45 52 20 42 59 20 69 73 20   to ORDER BY is 
9ac0: 61 20 6c 69 73 74 20 6f 66 20 65 78 70 72 65 73  a list of expres
9ad0: 73 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 75  sions that are u
9ae0: 73 65 64 20 61 73 20 74 68 65 0a 6b 65 79 20 66  sed as the.key f
9af0: 6f 72 20 74 68 65 20 73 6f 72 74 2e 20 20 54 68  or the sort.  Th
9b00: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 64 6f  e expressions do
9b10: 20 6e 6f 74 20 68 61 76 65 20 74 6f 20 62 65 20   not have to be 
9b20: 70 61 72 74 20 6f 66 20 74 68 65 0a 72 65 73 75  part of the.resu
9b30: 6c 74 20 66 6f 72 20 61 20 73 69 6d 70 6c 65 20  lt for a simple 
9b40: 53 45 4c 45 43 54 2c 20 62 75 74 20 69 6e 20 61  SELECT, but in a
9b50: 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
9b60: 20 65 61 63 68 20 73 6f 72 74 0a 65 78 70 72 65   each sort.expre
9b70: 73 73 69 6f 6e 20 6d 75 73 74 20 65 78 61 63 74  ssion must exact
9b80: 6c 79 20 6d 61 74 63 68 20 6f 6e 65 20 6f 66 20  ly match one of 
9b90: 74 68 65 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d  the result colum
9ba0: 6e 73 2e 20 20 45 61 63 68 0a 73 6f 72 74 20 65  ns.  Each.sort e
9bb0: 78 70 72 65 73 73 69 6f 6e 20 6d 61 79 20 62 65  xpression may be
9bc0: 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c   optionally foll
9bd0: 6f 77 65 64 20 62 79 20 41 53 43 20 6f 72 20 44  owed by ASC or D
9be0: 45 53 43 20 74 6f 20 73 70 65 63 69 66 79 0a 74  ESC to specify.t
9bf0: 68 65 20 73 6f 72 74 20 6f 72 64 65 72 2e 3c 2f  he sort order.</
9c00: 70 3e 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54  p>..<p>The LIMIT
9c10: 20 63 6c 61 75 73 65 20 70 6c 61 63 65 73 20 61   clause places a
9c20: 6e 20 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e  n upper bound on
9c30: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72   the number of r
9c40: 6f 77 73 0a 72 65 74 75 72 6e 65 64 20 69 6e 20  ows.returned in 
9c50: 74 68 65 20 72 65 73 75 6c 74 2e 20 20 41 20 4c  the result.  A L
9c60: 49 4d 49 54 20 6f 66 20 30 20 69 6e 64 69 63 61  IMIT of 0 indica
9c70: 74 65 73 20 6e 6f 20 75 70 70 65 72 20 62 6f 75  tes no upper bou
9c80: 6e 64 2e 0a 54 68 65 20 6f 70 74 69 6f 6e 61 6c  nd..The optional
9c90: 20 4f 46 46 53 45 54 20 66 6f 6c 6c 6f 77 69 6e   OFFSET followin
9ca0: 67 20 4c 49 4d 49 54 20 73 70 65 63 69 66 69 65  g LIMIT specifie
9cb0: 73 20 68 6f 77 20 6d 61 6e 79 0a 72 6f 77 73 20  s how many.rows 
9cc0: 74 6f 20 73 6b 69 70 20 61 74 20 74 68 65 20 62  to skip at the b
9cd0: 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20  eginning of the 
9ce0: 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70 3e 0a  result set.</p>.
9cf0: 0a 3c 70 3e 41 20 63 6f 6d 70 6f 75 6e 64 20 53  .<p>A compound S
9d00: 45 4c 45 43 54 20 69 73 20 66 6f 72 6d 65 64 20  ELECT is formed 
9d10: 66 72 6f 6d 20 74 77 6f 20 6f 72 20 6d 6f 72 65  from two or more
9d20: 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 73 20   simple SELECTs 
9d30: 63 6f 6e 6e 65 63 74 65 64 0a 62 79 20 6f 6e 65  connected.by one
9d40: 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 6f 72   of the operator
9d50: 73 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20 41  s UNION, UNION A
9d60: 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 2c 20 6f  LL, INTERSECT, o
9d70: 72 20 45 58 43 45 50 54 2e 20 20 49 6e 0a 61 20  r EXCEPT.  In.a 
9d80: 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 2c  compound SELECT,
9d90: 20 61 6c 6c 20 74 68 65 20 63 6f 6e 73 74 69 74   all the constit
9da0: 75 65 6e 74 20 53 45 4c 45 43 54 73 20 6d 75 73  uent SELECTs mus
9db0: 74 20 73 70 65 63 69 66 79 20 74 68 65 0a 73 61  t specify the.sa
9dc0: 6d 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 65 73  me number of res
9dd0: 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 54 68  ult columns.  Th
9de0: 65 72 65 20 6d 61 79 20 62 65 20 6f 6e 6c 79 20  ere may be only 
9df0: 61 20 73 69 6e 67 6c 65 20 4f 52 44 45 52 20 42  a single ORDER B
9e00: 59 0a 63 6c 61 75 73 65 20 61 74 20 74 68 65 20  Y.clause at the 
9e10: 65 6e 64 20 6f 66 20 74 68 65 20 63 6f 6d 70 6f  end of the compo
9e20: 75 6e 64 20 53 45 4c 45 43 54 2e 20 20 54 68 65  und SELECT.  The
9e30: 20 55 4e 49 4f 4e 20 61 6e 64 20 55 4e 49 4f 4e   UNION and UNION
9e40: 20 41 4c 4c 0a 6f 70 65 72 61 74 6f 72 73 20 63   ALL.operators c
9e50: 6f 6d 62 69 6e 65 20 74 68 65 20 72 65 73 75 6c  ombine the resul
9e60: 74 73 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54  ts of the SELECT
9e70: 73 20 74 6f 20 74 68 65 20 72 69 67 68 74 20 61  s to the right a
9e80: 6e 64 20 6c 65 66 74 20 69 6e 74 6f 0a 61 20 73  nd left into.a s
9e90: 69 6e 67 6c 65 20 62 69 67 20 74 61 62 6c 65 2e  ingle big table.
9ea0: 20 20 54 68 65 20 64 69 66 66 65 72 65 6e 63 65    The difference
9eb0: 20 69 73 20 74 68 61 74 20 69 6e 20 55 4e 49 4f   is that in UNIO
9ec0: 4e 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f 77  N all result row
9ed0: 73 0a 61 72 65 20 64 69 73 74 69 6e 63 74 20 77  s.are distinct w
9ee0: 68 65 72 65 20 69 6e 20 55 4e 49 4f 4e 20 41 4c  here in UNION AL
9ef0: 4c 20 74 68 65 72 65 20 6d 61 79 20 62 65 20 64  L there may be d
9f00: 75 70 6c 69 63 61 74 65 73 2e 0a 54 68 65 20 49  uplicates..The I
9f10: 4e 54 45 52 53 45 43 54 20 6f 70 65 72 61 74 6f  NTERSECT operato
9f20: 72 20 74 61 6b 65 73 20 74 68 65 20 69 6e 74 65  r takes the inte
9f30: 72 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65 20  rsection of the 
9f40: 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 0a 6c  results of the.l
9f50: 65 66 74 20 61 6e 64 20 72 69 67 68 74 20 53 45  eft and right SE
9f60: 4c 45 43 54 73 2e 20 20 45 58 43 45 50 54 20 74  LECTs.  EXCEPT t
9f70: 61 6b 65 73 20 74 68 65 20 72 65 73 75 6c 74 20  akes the result 
9f80: 6f 66 20 6c 65 66 74 20 53 45 4c 45 43 54 20 61  of left SELECT a
9f90: 66 74 65 72 0a 72 65 6d 6f 76 69 6e 67 20 74 68  fter.removing th
9fa0: 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65  e results of the
9fb0: 20 72 69 67 68 74 20 53 45 4c 45 43 54 2e 20 20   right SELECT.  
9fc0: 57 68 65 6e 20 74 68 72 65 65 20 61 72 65 20 6d  When three are m
9fd0: 6f 72 65 20 53 45 4c 45 43 54 73 0a 61 72 65 20  ore SELECTs.are 
9fe0: 63 6f 6e 6e 65 63 74 65 64 20 69 6e 74 6f 20 61  connected into a
9ff0: 20 63 6f 6d 70 6f 75 6e 64 2c 20 74 68 65 79 20   compound, they 
a000: 67 72 6f 75 70 20 66 72 6f 6d 20 6c 65 66 74 20  group from left 
a010: 74 6f 20 72 69 67 68 74 2e 3c 2f 70 3e 0a 7d 0a  to right.</p>.}.
a020: 0a 53 65 63 74 69 6f 6e 20 55 50 44 41 54 45 20  .Section UPDATE 
a030: 75 70 64 61 74 65 0a 0a 53 79 6e 74 61 78 20 7b  update..Syntax {
a040: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
a050: 0a 55 50 44 41 54 45 20 5b 20 4f 52 20 3c 63 6f  .UPDATE [ OR <co
a060: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
a070: 3e 20 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  > ] <table-name>
a080: 0a 53 45 54 20 3c 61 73 73 69 67 6e 6d 65 6e 74  .SET <assignment
a090: 3e 20 5b 2c 20 3c 61 73 73 69 67 6e 6d 65 6e 74  > [, <assignment
a0a0: 3e 5d 20 0a 5b 57 48 45 52 45 20 3c 65 78 70 72  >] .[WHERE <expr
a0b0: 3e 5d 0a 7d 20 7b 61 73 73 69 67 6e 6d 65 6e 74  >].} {assignment
a0c0: 7d 20 7b 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  } {.<column-name
a0d0: 3e 20 3d 20 3c 65 78 70 72 3e 0a 7d 0a 0a 70 75  > = <expr>.}..pu
a0e0: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 55 50 44 41  ts {.<p>The UPDA
a0f0: 54 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20  TE statement is 
a100: 75 73 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74  used to change t
a110: 68 65 20 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75  he value of colu
a120: 6d 6e 73 20 69 6e 20 0a 73 65 6c 65 63 74 65 64  mns in .selected
a130: 20 72 6f 77 73 20 6f 66 20 61 20 74 61 62 6c 65   rows of a table
a140: 2e 20 20 45 61 63 68 20 61 73 73 69 67 6e 6d 65  .  Each assignme
a150: 6e 74 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20  nt in an UPDATE 
a160: 73 70 65 63 69 66 69 65 73 0a 61 20 63 6f 6c 75  specifies.a colu
a170: 6d 6e 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6c  mn name to the l
a180: 65 66 74 20 6f 66 20 74 68 65 20 65 71 75 61 6c  eft of the equal
a190: 73 20 73 69 67 6e 20 61 6e 64 20 61 6e 20 61 72  s sign and an ar
a1a0: 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69  bitrary expressi
a1b0: 6f 6e 0a 74 6f 20 74 68 65 20 72 69 67 68 74 2e  on.to the right.
a1c0: 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e    The expression
a1d0: 73 20 6d 61 79 20 75 73 65 20 74 68 65 20 76 61  s may use the va
a1e0: 6c 75 65 73 20 6f 66 20 6f 74 68 65 72 20 63 6f  lues of other co
a1f0: 6c 75 6d 6e 73 2e 0a 41 6c 6c 20 65 78 70 72 65  lumns..All expre
a200: 73 73 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75  ssions are evalu
a210: 61 74 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20  ated before any 
a220: 61 73 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20  assignments are 
a230: 6d 61 64 65 2e 0a 41 20 57 48 45 52 45 20 63 6c  made..A WHERE cl
a240: 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64  ause can be used
a250: 20 74 6f 20 72 65 73 74 72 69 63 74 20 77 68 69   to restrict whi
a260: 63 68 20 72 6f 77 73 20 61 72 65 20 75 70 64 61  ch rows are upda
a270: 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ted.</p>..<p>The
a280: 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69   optional confli
a290: 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73  ct-clause allows
a2a0: 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
a2b0: 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
a2c0: 74 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20  tive.constraint 
a2d0: 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
a2e0: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f  ion algorithm to
a2f0: 20 75 73 65 20 64 75 72 69 6e 67 20 74 68 69 73   use during this
a300: 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65   one command..Se
a310: 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69  e the section ti
a320: 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63  tled.<a href="#c
a330: 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46  onflict">ON CONF
a340: 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64  LICT</a> for add
a350: 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74  itional informat
a360: 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 53 65 63 74  ion.</p>.}..Sect
a370: 69 6f 6e 20 56 41 43 55 55 4d 20 76 61 63 75 75  ion VACUUM vacuu
a380: 6d 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  m..Syntax {sql-s
a390: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 56 41 43 55  tatement} {.VACU
a3a0: 55 4d 20 5b 3c 69 6e 64 65 78 2d 6f 72 2d 74 61  UM [<index-or-ta
a3b0: 62 6c 65 2d 6e 61 6d 65 3e 5d 0a 7d 0a 0a 70 75  ble-name>].}..pu
a3c0: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 56 41 43 55  ts {.<p>The VACU
a3d0: 55 4d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e  UM command is an
a3e0: 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f   SQLite extensio
a3f0: 6e 20 6d 6f 64 65 6c 6c 65 64 20 61 66 74 65 72  n modelled after
a400: 20 61 20 73 69 6d 69 6c 61 72 0a 63 6f 6d 6d 61   a similar.comma
a410: 6e 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73 74  nd found in Post
a420: 67 72 65 53 51 4c 2e 20 20 49 66 20 56 41 43 55  greSQL.  If VACU
a430: 55 4d 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69  UM is invoked wi
a440: 74 68 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  th the name of a
a450: 0a 74 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 20  .table or index 
a460: 74 68 65 6e 20 69 74 20 69 73 20 73 75 70 70 6f  then it is suppo
a470: 73 65 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 74  se to clean up t
a480: 68 65 20 6e 61 6d 65 64 20 74 61 62 6c 65 20 6f  he named table o
a490: 72 20 69 6e 64 65 78 2e 0a 49 6e 20 76 65 72 73  r index..In vers
a4a0: 69 6f 6e 20 31 2e 30 20 6f 66 20 53 51 4c 69 74  ion 1.0 of SQLit
a4b0: 65 2c 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f  e, the VACUUM co
a4c0: 6d 6d 61 6e 64 20 77 6f 75 6c 64 20 69 6e 76 6f  mmand would invo
a4d0: 6b 65 20 0a 3c 62 3e 67 64 62 6d 5f 72 65 6f 72  ke .<b>gdbm_reor
a4e0: 67 61 6e 69 7a 65 28 29 3c 2f 62 3e 20 74 6f 20  ganize()</b> to 
a4f0: 63 6c 65 61 6e 20 75 70 20 74 68 65 20 62 61 63  clean up the bac
a500: 6b 65 6e 64 20 64 61 74 61 62 61 73 65 20 66 69  kend database fi
a510: 6c 65 2e 0a 42 65 67 69 6e 6e 69 6e 67 20 77 69  le..Beginning wi
a520: 74 68 20 76 65 72 73 69 6f 6e 20 32 2e 30 20 6f  th version 2.0 o
a530: 66 20 53 51 4c 69 74 65 2c 20 47 44 42 4d 20 69  f SQLite, GDBM i
a540: 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 75 73 65 64  s no longer used
a550: 20 66 6f 72 0a 74 68 65 20 64 61 74 61 62 61 73   for.the databas
a560: 65 20 62 61 63 6b 65 6e 64 20 61 6e 64 20 56 41  e backend and VA
a570: 43 55 55 4d 20 68 61 73 20 62 65 63 6f 6d 65 20  CUUM has become 
a580: 61 20 6e 6f 2d 6f 70 2e 0a 3c 2f 70 3e 0a 7d 0a  a no-op..</p>.}.
a590: 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54 45  .Section {CREATE
a5a0: 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74 65   TRIGGER} create
a5b0: 74 72 69 67 67 65 72 0a 0a 53 79 6e 74 61 78 20  trigger..Syntax 
a5c0: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
a5d0: 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47 45 52  {.CREATE TRIGGER
a5e0: 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e 20   <trigger-name> 
a5f0: 5b 20 42 45 46 4f 52 45 20 7c 20 41 46 54 45 52  [ BEFORE | AFTER
a600: 20 5d 0a 3c 64 61 74 61 62 61 73 65 2d 65 76 65   ].<database-eve
a610: 6e 74 3e 0a 3c 74 72 69 67 67 65 72 2d 61 63 74  nt>.<trigger-act
a620: 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b  ion>.}..Syntax {
a630: 64 61 74 61 62 61 73 65 2d 65 76 65 6e 74 7d 20  database-event} 
a640: 7b 0a 44 45 4c 45 54 45 20 7c 20 0a 49 4e 53 45  {.DELETE | .INSE
a650: 52 54 20 7c 20 0a 55 50 44 41 54 45 20 7c 20 0a  RT | .UPDATE | .
a660: 55 50 44 41 54 45 20 4f 46 20 3c 63 6f 6c 75 6d  UPDATE OF <colum
a670: 6e 2d 6c 69 73 74 3e 0a 4f 4e 20 3c 74 61 62 6c  n-list>.ON <tabl
a680: 65 2d 6e 61 6d 65 3e 20 0a 7d 0a 0a 53 79 6e 74  e-name> .}..Synt
a690: 61 78 20 7b 74 72 69 67 67 65 72 2d 61 63 74 69  ax {trigger-acti
a6a0: 6f 6e 7d 20 7b 0a 5b 20 46 4f 52 20 45 41 43 48  on} {.[ FOR EACH
a6b0: 20 52 4f 57 20 5d 20 5b 20 57 48 45 4e 20 3c 65   ROW ] [ WHEN <e
a6c0: 78 70 72 65 73 73 69 6f 6e 3e 20 5d 20 0a 42 45  xpression> ] .BE
a6d0: 47 49 4e 20 0a 20 20 3c 74 72 69 67 67 65 72 2d  GIN .  <trigger-
a6e0: 73 74 65 70 3e 20 3b 20 5b 20 3c 74 72 69 67 67  step> ; [ <trigg
a6f0: 65 72 2d 73 74 65 70 3e 20 3b 20 5d 2a 0a 45 4e  er-step> ; ]*.EN
a700: 44 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 74 72 69  D.}..Syntax {tri
a710: 67 67 65 72 2d 73 74 65 70 7d 20 7b 0a 3c 75 70  gger-step} {.<up
a720: 64 61 74 65 2d 73 74 61 74 65 6d 65 6e 74 3e 20  date-statement> 
a730: 7c 20 3c 69 6e 73 65 72 74 2d 73 74 61 74 65 6d  | <insert-statem
a740: 65 6e 74 3e 20 7c 20 0a 3c 64 65 6c 65 74 65 2d  ent> | .<delete-
a750: 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20 3c 73 65  statement> | <se
a760: 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20  lect-statement> 
a770: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
a780: 65 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52  e CREATE TRIGGER
a790: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
a7a0: 65 64 20 74 6f 20 61 64 64 20 74 72 69 67 67 65  ed to add trigge
a7b0: 72 73 20 74 6f 20 74 68 65 20 0a 64 61 74 61 62  rs to the .datab
a7c0: 61 73 65 20 73 63 68 65 6d 61 2e 20 54 72 69 67  ase schema. Trig
a7d0: 67 65 72 73 20 61 72 65 20 64 61 74 61 62 61 73  gers are databas
a7e0: 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 28 74 68  e operations (th
a7f0: 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 61 63 74  e <i>trigger-act
a800: 69 6f 6e 3c 2f 69 3e 29 20 0a 74 68 61 74 20 61  ion</i>) .that a
a810: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
a820: 20 70 65 72 66 6f 72 6d 65 64 20 77 68 65 6e 20   performed when 
a830: 61 20 73 70 65 63 69 66 69 65 64 20 64 61 74 61  a specified data
a840: 62 61 73 65 20 65 76 65 6e 74 20 28 74 68 65 0a  base event (the.
a850: 3c 69 3e 64 61 74 61 62 61 73 65 2d 65 76 65 6e  <i>database-even
a860: 74 3c 2f 69 3e 29 20 6f 63 63 75 72 73 2e 20 20  t</i>) occurs.  
a870: 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 74 72 69 67 67  </p>..<p>A trigg
a880: 65 72 20 6d 61 79 20 62 65 20 73 70 65 63 69 66  er may be specif
a890: 69 65 64 20 74 6f 20 66 69 72 65 20 77 68 65 6e  ied to fire when
a8a0: 65 76 65 72 20 61 20 44 45 4c 45 54 45 2c 20 49  ever a DELETE, I
a8b0: 4e 53 45 52 54 20 6f 72 20 55 50 44 41 54 45 20  NSERT or UPDATE 
a8c0: 6f 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72 20  of a.particular 
a8d0: 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20 6f  database table o
a8e0: 63 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65 76  ccurs, or whenev
a8f0: 65 72 20 61 6e 20 55 50 44 41 54 45 20 6f 66 20  er an UPDATE of 
a900: 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a 73 70 65 63  one or more.spec
a910: 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73 20 6f 66  ified columns of
a920: 20 61 20 74 61 62 6c 65 20 61 72 65 20 75 70 64   a table are upd
a930: 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 74  ated.</p>..<p>At
a940: 20 74 68 69 73 20 74 69 6d 65 20 53 51 4c 69 74   this time SQLit
a950: 65 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c 79 20  e supports only 
a960: 46 4f 52 20 45 41 43 48 20 52 4f 57 20 74 72 69  FOR EACH ROW tri
a970: 67 67 65 72 73 2c 20 6e 6f 74 20 46 4f 52 20 45  ggers, not FOR E
a980: 41 43 48 0a 53 54 41 54 45 4d 45 4e 54 20 74 72  ACH.STATEMENT tr
a990: 69 67 67 65 72 73 2e 20 48 65 6e 63 65 20 65 78  iggers. Hence ex
a9a0: 70 6c 69 63 69 74 6c 79 20 73 70 65 63 69 66 79  plicitly specify
a9b0: 69 6e 67 20 46 4f 52 20 45 41 43 48 20 52 4f 57  ing FOR EACH ROW
a9c0: 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 20 46   is optional.  F
a9d0: 4f 52 0a 45 41 43 48 20 52 4f 57 20 69 6d 70 6c  OR.EACH ROW impl
a9e0: 69 65 73 20 74 68 61 74 20 74 68 65 20 53 51 4c  ies that the SQL
a9f0: 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63   statements spec
aa00: 69 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69 67  ified as <i>trig
aa10: 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 0a 6d  ger-steps</i> .m
aa20: 61 79 20 62 65 20 65 78 65 63 75 74 65 64 20 28  ay be executed (
aa30: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65  depending on the
aa40: 20 57 48 45 4e 20 63 6c 61 75 73 65 29 20 66 6f   WHEN clause) fo
aa50: 72 20 65 61 63 68 20 64 61 74 61 62 61 73 65 20  r each database 
aa60: 72 6f 77 20 62 65 69 6e 67 0a 69 6e 73 65 72 74  row being.insert
aa70: 65 64 2c 20 75 70 64 61 74 65 64 20 6f 72 20 64  ed, updated or d
aa80: 65 6c 65 74 65 64 20 62 79 20 74 68 65 20 73 74  eleted by the st
aa90: 61 74 65 6d 65 6e 74 20 63 61 75 73 69 6e 67 20  atement causing 
aaa0: 74 68 65 20 74 72 69 67 67 65 72 20 74 6f 20 66  the trigger to f
aab0: 69 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74  ire.</p>..<p>Bot
aac0: 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73  h the WHEN claus
aad0: 65 20 61 6e 64 20 74 68 65 20 3c 69 3e 74 72 69  e and the <i>tri
aae0: 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 6d  gger-steps</i> m
aaf0: 61 79 20 61 63 63 65 73 73 20 65 6c 65 6d 65 6e  ay access elemen
ab00: 74 73 20 6f 66 20 0a 74 68 65 20 72 6f 77 20 62  ts of .the row b
ab10: 65 69 6e 67 20 69 6e 73 65 72 74 65 64 2c 20 64  eing inserted, d
ab20: 65 6c 65 74 65 64 20 6f 72 20 75 70 64 61 74 65  eleted or update
ab30: 64 20 75 73 69 6e 67 20 72 65 66 65 72 65 6e 63  d using referenc
ab40: 65 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 0a  es of the form .
ab50: 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e  "NEW.<i>column-n
ab60: 61 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22 4f 4c  ame</i>" and "OL
ab70: 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  D.<i>column-name
ab80: 3c 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c 69 3e  </i>", where.<i>
ab90: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 20  column-name</i> 
aba0: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  is the name of a
abb0: 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74 68 65   column from the
abc0: 20 74 61 62 6c 65 20 74 68 61 74 20 74 68 65 20   table that the 
abd0: 74 72 69 67 67 65 72 0a 69 73 20 61 73 73 6f 63  trigger.is assoc
abe0: 69 61 74 65 64 20 77 69 74 68 2e 20 4f 4c 44 20  iated with. OLD 
abf0: 61 6e 64 20 4e 45 57 20 72 65 66 65 72 65 6e 63  and NEW referenc
ac00: 65 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75  es may only be u
ac10: 73 65 64 20 69 6e 20 74 72 69 67 67 65 72 73 20  sed in triggers 
ac20: 6f 6e 0a 3c 69 3e 74 72 69 67 67 65 72 2d 65 76  on.<i>trigger-ev
ac30: 65 6e 74 3c 2f 69 3e 73 20 66 6f 72 20 77 68 69  ent</i>s for whi
ac40: 63 68 20 74 68 65 79 20 61 72 65 20 72 65 6c 65  ch they are rele
ac50: 76 61 6e 74 2c 20 61 73 20 66 6f 6c 6c 6f 77 73  vant, as follows
ac60: 3a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f  :</p>..<table bo
ac70: 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69  rder=0 cellpaddi
ac80: 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20  ng=10>.<tr>.<td 
ac90: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
aca0: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
acb0: 3d 31 32 30 3e 3c 69 3e 49 4e 53 45 52 54 3c 2f  =120><i>INSERT</
acc0: 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  i></td>.<td vali
acd0: 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 72 65 66  gn="top">NEW ref
ace0: 65 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69  erences are vali
acf0: 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72  d</td>.</tr>.<tr
ad00: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
ad10: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
ad20: 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 55 50   width=120><i>UP
ad30: 44 41 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74  DATE</i></td>.<t
ad40: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e  d valign="top">N
ad50: 45 57 20 61 6e 64 20 4f 4c 44 20 72 65 66 65 72  EW and OLD refer
ad60: 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c  ences are valid<
ad70: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a  /td>.</tr>.<tr>.
ad80: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
ad90: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77   align="right" w
ada0: 69 64 74 68 3d 31 32 30 3e 3c 69 3e 44 45 4c 45  idth=120><i>DELE
adb0: 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20  TE</i></td>.<td 
adc0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4f 4c 44  valign="top">OLD
add0: 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20   references are 
ade0: 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  valid</td>.</tr>
adf0: 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 70 3e 0a 0a  .</table>.</p>..
ae00: 3c 70 3e 49 66 20 61 20 57 48 45 4e 20 63 6c 61  <p>If a WHEN cla
ae10: 75 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c  use is supplied,
ae20: 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
ae30: 6e 74 73 20 73 70 65 63 69 66 69 65 64 20 61 73  nts specified as
ae40: 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70   <i>trigger-step
ae50: 73 3c 2f 69 3e 20 61 72 65 20 6f 6e 6c 79 20 65  s</i> are only e
ae60: 78 65 63 75 74 65 64 20 66 6f 72 20 72 6f 77 73  xecuted for rows
ae70: 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 57   for which the W
ae80: 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 74 72  HEN clause is tr
ae90: 75 65 2e 20 49 66 20 6e 6f 20 57 48 45 4e 20 63  ue. If no WHEN c
aea0: 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69 65  lause is supplie
aeb0: 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  d, the SQL state
aec0: 6d 65 6e 74 73 20 61 72 65 20 65 78 65 63 75 74  ments are execut
aed0: 65 64 20 66 6f 72 20 61 6c 6c 20 72 6f 77 73 2e  ed for all rows.
aee0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 70 65  </p>..<p>The spe
aef0: 63 69 66 69 65 64 20 3c 69 3e 74 72 69 67 67 65  cified <i>trigge
af00: 72 2d 74 69 6d 65 3c 2f 69 3e 20 64 65 74 65 72  r-time</i> deter
af10: 6d 69 6e 65 73 20 77 68 65 6e 20 74 68 65 20 3c  mines when the <
af20: 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c  i>trigger-steps<
af30: 2f 69 3e 0a 77 69 6c 6c 20 62 65 20 65 78 65 63  /i>.will be exec
af40: 75 74 65 64 20 72 65 6c 61 74 69 76 65 20 74 6f  uted relative to
af50: 20 74 68 65 20 69 6e 73 65 72 74 69 6f 6e 2c 20   the insertion, 
af60: 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 72 20  modification or 
af70: 72 65 6d 6f 76 61 6c 20 6f 66 20 74 68 65 0a 61  removal of the.a
af80: 73 73 6f 63 69 61 74 65 64 20 72 6f 77 2e 3c 2f  ssociated row.</
af90: 70 3e 0a 0a 3c 70 3e 41 6e 20 4f 4e 20 43 4f 4e  p>..<p>An ON CON
afa0: 46 4c 49 43 54 20 63 6c 61 75 73 65 20 6d 61 79  FLICT clause may
afb0: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 61 73   be specified as
afc0: 20 70 61 72 74 20 6f 66 20 61 6e 20 55 50 44 41   part of an UPDA
afd0: 54 45 20 6f 72 20 49 4e 53 45 52 54 0a 3c 69 3e  TE or INSERT.<i>
afe0: 74 72 69 67 67 65 72 2d 73 74 65 70 3c 2f 69 3e  trigger-step</i>
aff0: 2e 20 48 6f 77 65 76 65 72 20 69 66 20 61 6e 20  . However if an 
b000: 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
b010: 73 65 20 69 73 20 73 70 65 63 69 66 69 65 64 20  se is specified 
b020: 61 73 20 70 61 72 74 20 6f 66 20 0a 74 68 65 20  as part of .the 
b030: 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69 6e  statement causin
b040: 67 20 74 68 65 20 74 72 69 67 67 65 72 20 74 6f  g the trigger to
b050: 20 66 69 72 65 2c 20 74 68 65 6e 20 74 68 69 73   fire, then this
b060: 20 63 6f 6e 66 6c 69 63 74 20 68 61 6e 64 6c 69   conflict handli
b070: 6e 67 0a 70 6f 6c 69 63 79 20 69 73 20 75 73 65  ng.policy is use
b080: 64 20 69 6e 73 74 65 61 64 2e 3c 2f 70 3e 0a 0a  d instead.</p>..
b090: 3c 70 3e 54 72 69 67 67 65 72 73 20 61 72 65 20  <p>Triggers are 
b0a0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 72  automatically dr
b0b0: 6f 70 70 65 64 20 77 68 65 6e 20 74 68 65 20 74  opped when the t
b0c0: 61 62 6c 65 20 74 68 61 74 20 74 68 65 79 20 61  able that they a
b0d0: 72 65 20 0a 61 73 73 6f 63 69 61 74 65 64 20 77  re .associated w
b0e0: 69 74 68 20 69 73 20 64 72 6f 70 70 65 64 2e 3c  ith is dropped.<
b0f0: 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73  /p>..<p>Triggers
b100: 20 6d 61 79 20 62 65 20 63 72 65 61 74 65 64 20   may be created 
b110: 6f 6e 20 76 69 65 77 73 2c 20 61 73 20 77 65 6c  on views, as wel
b120: 6c 20 61 73 20 6f 72 64 69 6e 61 72 79 20 74 61  l as ordinary ta
b130: 62 6c 65 73 2e 20 49 66 20 6f 6e 65 20 6f 72 0a  bles. If one or.
b140: 6d 6f 72 65 20 49 4e 53 45 52 54 2c 20 44 45 4c  more INSERT, DEL
b150: 45 54 45 20 6f 72 20 55 50 44 41 54 45 20 74 72  ETE or UPDATE tr
b160: 69 67 67 65 72 73 20 61 72 65 20 64 65 66 69 6e  iggers are defin
b170: 65 64 20 6f 6e 20 61 20 76 69 65 77 2c 20 74 68  ed on a view, th
b180: 65 6e 20 69 74 20 69 73 20 6e 6f 74 0a 61 6e 20  en it is not.an 
b190: 65 72 72 6f 72 20 74 6f 20 65 78 65 63 75 74 65  error to execute
b1a0: 20 61 6e 20 49 4e 53 45 52 54 2c 20 44 45 4c 45   an INSERT, DELE
b1b0: 54 45 20 6f 72 20 55 50 44 41 54 45 20 73 74 61  TE or UPDATE sta
b1c0: 74 65 6d 65 6e 74 20 6f 6e 20 74 68 65 20 76 69  tement on the vi
b1d0: 65 77 2c 20 0a 72 65 73 70 65 63 74 69 76 65 6c  ew, .respectivel
b1e0: 79 2e 20 54 68 65 72 65 61 66 74 65 72 2c 20 65  y. Thereafter, e
b1f0: 78 65 63 75 74 69 6e 67 20 61 6e 20 49 4e 53 45  xecuting an INSE
b200: 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20 55 50  RT, DELETE or UP
b210: 44 41 54 45 20 6f 6e 20 74 68 65 20 76 69 65 77  DATE on the view
b220: 0a 63 61 75 73 65 73 20 74 68 65 20 61 73 73 6f  .causes the asso
b230: 63 69 61 74 65 64 20 74 72 69 67 67 65 72 73 20  ciated triggers 
b240: 74 6f 20 66 69 72 65 2e 20 54 68 65 20 72 65 61  to fire. The rea
b250: 6c 20 74 61 62 6c 65 73 20 75 6e 64 65 72 6c 79  l tables underly
b260: 69 6e 67 20 74 68 65 20 76 69 65 77 0a 61 72 65  ing the view.are
b270: 20 6e 6f 74 20 6d 6f 64 69 66 69 65 64 20 28 65   not modified (e
b280: 78 63 65 70 74 20 70 6f 73 73 69 62 6c 79 20 65  xcept possibly e
b290: 78 70 6c 69 63 69 74 6c 79 2c 20 62 79 20 61 20  xplicitly, by a 
b2a0: 74 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 29  trigger program)
b2b0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61  .</p>..<p><b>Exa
b2c0: 6d 70 6c 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c  mple:</b></p>..<
b2d0: 70 3e 41 73 73 75 6d 69 6e 67 20 74 68 61 74 20  p>Assuming that 
b2e0: 63 75 73 74 6f 6d 65 72 20 72 65 63 6f 72 64 73  customer records
b2f0: 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74   are stored in t
b300: 68 65 20 22 63 75 73 74 6f 6d 65 72 73 22 20 74  he "customers" t
b310: 61 62 6c 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f  able, and.that o
b320: 72 64 65 72 20 72 65 63 6f 72 64 73 20 61 72 65  rder records are
b330: 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22   stored in the "
b340: 6f 72 64 65 72 73 22 20 74 61 62 6c 65 2c 20 74  orders" table, t
b350: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69  he following tri
b360: 67 67 65 72 0a 65 6e 73 75 72 65 73 20 74 68 61  gger.ensures tha
b370: 74 20 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64  t all associated
b380: 20 6f 72 64 65 72 73 20 61 72 65 20 72 65 64 69   orders are redi
b390: 72 65 63 74 65 64 20 77 68 65 6e 20 61 20 63 75  rected when a cu
b3a0: 73 74 6f 6d 65 72 20 63 68 61 6e 67 65 73 0a 68  stomer changes.h
b3b0: 69 73 20 6f 72 20 68 65 72 20 61 64 64 72 65 73  is or her addres
b3c0: 73 3a 3c 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c 65  s:</p>.}.Example
b3d0: 20 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47 45   {.CREATE TRIGGE
b3e0: 52 20 75 70 64 61 74 65 5f 63 75 73 74 6f 6d 65  R update_custome
b3f0: 72 5f 61 64 64 72 65 73 73 20 55 50 44 41 54 45  r_address UPDATE
b400: 20 4f 46 20 61 64 64 72 65 73 73 20 4f 4e 20 63   OF address ON c
b410: 75 73 74 6f 6d 65 72 73 20 0a 20 20 42 45 47 49  ustomers .  BEGI
b420: 4e 0a 20 20 20 20 55 50 44 41 54 45 20 6f 72 64  N.    UPDATE ord
b430: 65 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20  ers SET address 
b440: 3d 20 6e 65 77 2e 61 64 64 72 65 73 73 20 57 48  = new.address WH
b450: 45 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d  ERE customer_nam
b460: 65 20 3d 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20  e = old.name;.  
b470: 45 4e 44 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70  END;.}.puts {.<p
b480: 3e 57 69 74 68 20 74 68 69 73 20 74 72 69 67 67  >With this trigg
b490: 65 72 20 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78  er installed, ex
b4a0: 65 63 75 74 69 6e 67 20 74 68 65 20 73 74 61 74  ecuting the stat
b4b0: 65 6d 65 6e 74 3a 3c 2f 70 3e 0a 7d 0a 45 78 61  ement:</p>.}.Exa
b4c0: 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 63 75  mple {.UPDATE cu
b4d0: 73 74 6f 6d 65 72 73 20 53 45 54 20 61 64 64 72  stomers SET addr
b4e0: 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74  ess = '1 Main St
b4f0: 2e 27 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20  .' WHERE name = 
b500: 27 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a  'Jack Jones';.}.
b510: 70 75 74 73 20 7b 0a 3c 70 3e 63 61 75 73 65 73  puts {.<p>causes
b520: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74   the following t
b530: 6f 20 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c  o be automatical
b540: 6c 79 20 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e  ly executed:</p>
b550: 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44  .}.Example {.UPD
b560: 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20 61  ATE orders SET a
b570: 64 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e  ddress = '1 Main
b580: 20 53 74 2e 27 20 57 48 45 52 45 20 63 75 73 74   St.' WHERE cust
b590: 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63  omer_name = 'Jac
b5a0: 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 0a 53 65 63  k Jones';.}..Sec
b5b0: 74 69 6f 6e 20 7b 44 52 4f 50 20 54 52 49 47 47  tion {DROP TRIGG
b5c0: 45 52 7d 20 64 72 6f 70 74 72 69 67 67 65 72 0a  ER} droptrigger.
b5d0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
b5e0: 65 6d 65 6e 74 7d 20 7b 0a 44 52 4f 50 20 54 52  ement} {.DROP TR
b5f0: 49 47 47 45 52 20 3c 74 72 69 67 67 65 72 2d 6e  IGGER <trigger-n
b600: 61 6d 65 3e 0a 7d 0a 70 75 74 73 20 7b 20 0a 20  ame>.}.puts { . 
b610: 20 3c 70 3e 55 73 65 64 20 74 6f 20 64 72 6f 70   <p>Used to drop
b620: 20 61 20 74 72 69 67 67 65 72 20 66 72 6f 6d 20   a trigger from 
b630: 74 68 65 20 64 61 74 61 62 61 73 65 20 73 63 68  the database sch
b640: 65 6d 61 2e 20 4e 6f 74 65 20 74 68 61 74 20 74  ema. Note that t
b650: 72 69 67 67 65 72 73 0a 20 20 61 72 65 20 61 75  riggers.  are au
b660: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 72 6f 70  tomatically drop
b670: 70 65 64 20 77 68 65 6e 20 74 68 65 20 61 73 73  ped when the ass
b680: 6f 63 69 61 74 65 64 20 74 61 62 6c 65 20 69 73  ociated table is
b690: 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 7d 0a   dropped.</p>.}.
b6a0: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 3c 68 72 20  ..puts {.<p><hr 
b6b0: 2f 3e 3c 2f 70 3e 0a 3c 70 3e 3c 61 20 68 72 65  /></p>.<p><a hre
b6c0: 66 3d 22 69 6e 64 65 78 2e 68 74 6d 6c 22 3e 3c  f="index.html"><
b6d0: 69 6d 67 20 73 72 63 3d 22 2f 67 6f 62 61 63 6b  img src="/goback
b6e0: 2e 6a 70 67 22 20 62 6f 72 64 65 72 3d 30 20 2f  .jpg" border=0 /
b6f0: 3e 0a 42 61 63 6b 20 74 6f 20 74 68 65 20 53 51  >.Back to the SQ
b700: 4c 69 74 65 20 48 6f 6d 65 20 50 61 67 65 3c 2f  Lite Home Page</
b710: 61 3e 0a 3c 2f 70 3e 0a 0a 3c 2f 62 6f 64 79 3e  a>.</p>..</body>
b720: 3c 2f 68 74 6d 6c 3e 7d 0a                       </html>}.