/ Hex Artifact Content
Login

Artifact 5193e27d5ab92ffa98427ef0fcc55d7a7c0e3ac3:


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 37 30 20 32 30 30 34  .tcl,v 1.70 2004
0060: 2f 30 36 2f 31 38 20 31 31 3a 32 35 3a 32 31 20  /06/18 11:25:21 
0070: 64 61 6e 69 65 6c 6b 31 39 37 37 20 45 78 70 20  danielk1977 Exp 
0080: 24 7d 0a 73 6f 75 72 63 65 20 63 6f 6d 6d 6f 6e  $}.source common
0090: 2e 74 63 6c 0a 68 65 61 64 65 72 20 7b 51 75 65  .tcl.header {Que
00a0: 72 79 20 4c 61 6e 67 75 61 67 65 20 55 6e 64 65  ry Language Unde
00b0: 72 73 74 6f 6f 64 20 62 79 20 53 51 4c 69 74 65  rstood by SQLite
00c0: 7d 0a 70 75 74 73 20 7b 0a 3c 68 32 3e 53 51 4c  }.puts {.<h2>SQL
00d0: 20 41 73 20 55 6e 64 65 72 73 74 6f 6f 64 20 42   As Understood B
00e0: 79 20 53 51 4c 69 74 65 3c 2f 68 32 3e 0a 0a 3c  y SQLite</h2>..<
00f0: 70 3e 54 68 65 20 53 51 4c 69 74 65 20 6c 69 62  p>The SQLite lib
0100: 72 61 72 79 20 75 6e 64 65 72 73 74 61 6e 64 73  rary understands
0110: 20 6d 6f 73 74 20 6f 66 20 74 68 65 20 73 74 61   most of the sta
0120: 6e 64 61 72 64 20 53 51 4c 0a 6c 61 6e 67 75 61  ndard SQL.langua
0130: 67 65 2e 20 20 42 75 74 20 69 74 20 64 6f 65 73  ge.  But it does
0140: 20 3c 61 20 68 72 65 66 3d 22 6f 6d 69 74 74 65   <a href="omitte
0150: 64 2e 68 74 6d 6c 22 3e 6f 6d 69 74 20 73 6f 6d  d.html">omit som
0160: 65 20 66 65 61 74 75 72 65 73 3c 2f 61 3e 0a 77  e features</a>.w
0170: 68 69 6c 65 20 61 74 20 74 68 65 20 73 61 6d 65  hile at the same
0180: 20 74 69 6d 65 0a 61 64 64 69 6e 67 20 61 20 66   time.adding a f
0190: 65 77 20 66 65 61 74 75 72 65 73 20 6f 66 20 69  ew features of i
01a0: 74 73 20 6f 77 6e 2e 20 20 54 68 69 73 20 64 6f  ts own.  This do
01b0: 63 75 6d 65 6e 74 20 61 74 74 65 6d 70 74 73 20  cument attempts 
01c0: 74 6f 0a 64 65 73 63 72 69 62 65 20 70 65 72 63  to.describe perc
01d0: 69 73 65 6c 79 20 77 68 61 74 20 70 61 72 74 73  isely what parts
01e0: 20 6f 66 20 74 68 65 20 53 51 4c 20 6c 61 6e 67   of the SQL lang
01f0: 75 61 67 65 20 53 51 4c 69 74 65 20 64 6f 65 73  uage SQLite does
0200: 0a 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 73 75  .and does not su
0210: 70 70 6f 72 74 2e 20 20 41 20 6c 69 73 74 20 6f  pport.  A list o
0220: 66 20 3c 61 20 68 72 65 66 3d 22 23 6b 65 79 77  f <a href="#keyw
0230: 6f 72 64 73 22 3e 6b 65 79 77 6f 72 64 73 3c 2f  ords">keywords</
0240: 61 3e 20 69 73 20 0a 67 69 76 65 6e 20 61 74 20  a> is .given at 
0250: 74 68 65 20 65 6e 64 2e 3c 2f 70 3e 0a 0a 3c 70  the end.</p>..<p
0260: 3e 49 6e 20 61 6c 6c 20 6f 66 20 74 68 65 20 73  >In all of the s
0270: 79 6e 74 61 78 20 64 69 61 67 72 61 6d 73 20 74  yntax diagrams t
0280: 68 61 74 20 66 6f 6c 6c 6f 77 2c 20 6c 69 74 65  hat follow, lite
0290: 72 61 6c 20 74 65 78 74 20 69 73 20 73 68 6f 77  ral text is show
02a0: 6e 20 69 6e 0a 62 6f 6c 64 20 62 6c 75 65 2e 20  n in.bold blue. 
02b0: 20 4e 6f 6e 2d 74 65 72 6d 69 6e 61 6c 20 73 79   Non-terminal sy
02c0: 6d 62 6f 6c 73 20 61 72 65 20 73 68 6f 77 6e 20  mbols are shown 
02d0: 69 6e 20 69 74 61 6c 69 63 20 72 65 64 2e 20 20  in italic red.  
02e0: 4f 70 65 72 61 74 6f 72 73 0a 74 68 61 74 20 61  Operators.that a
02f0: 72 65 20 70 61 72 74 20 6f 66 20 74 68 65 20 73  re part of the s
0300: 79 6e 74 61 63 74 69 63 20 6d 61 72 6b 75 70 20  yntactic markup 
0310: 69 74 73 65 6c 66 20 61 72 65 20 73 68 6f 77 6e  itself are shown
0320: 20 69 6e 20 62 6c 61 63 6b 20 72 6f 6d 61 6e 2e   in black roman.
0330: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 64 6f  </p>..<p>This do
0340: 63 75 6d 65 6e 74 20 69 73 20 6a 75 73 74 20 61  cument is just a
0350: 6e 20 6f 76 65 72 76 69 65 77 20 6f 66 20 74 68  n overview of th
0360: 65 20 53 51 4c 20 73 79 6e 74 61 78 20 69 6d 70  e SQL syntax imp
0370: 6c 65 6d 65 6e 74 65 64 0a 62 79 20 53 51 4c 69  lemented.by SQLi
0380: 74 65 2e 20 20 4d 61 6e 79 20 6c 6f 77 2d 6c 65  te.  Many low-le
0390: 76 65 6c 20 70 72 6f 64 75 63 74 69 6f 6e 73 20  vel productions 
03a0: 61 72 65 20 6f 6d 69 74 74 65 64 2e 20 20 46 6f  are omitted.  Fo
03b0: 72 20 64 65 74 61 69 6c 65 64 20 69 6e 66 6f 72  r detailed infor
03c0: 6d 61 74 69 6f 6e 0a 6f 6e 20 74 68 65 20 6c 61  mation.on the la
03d0: 6e 67 75 61 67 65 20 74 68 61 74 20 53 51 4c 69  nguage that SQLi
03e0: 74 65 20 75 6e 64 65 72 73 74 61 6e 64 73 2c 20  te understands, 
03f0: 72 65 66 65 72 20 74 6f 20 74 68 65 20 73 6f 75  refer to the sou
0400: 72 63 65 20 63 6f 64 65 20 61 6e 64 0a 74 68 65  rce code and.the
0410: 20 67 72 61 6d 6d 61 72 20 66 69 6c 65 20 22 70   grammar file "p
0420: 61 72 73 65 2e 79 22 2e 3c 2f 70 3e 0a 0a 0a 3c  arse.y".</p>...<
0430: 70 3e 53 51 4c 69 74 65 20 69 6d 70 6c 65 6d 65  p>SQLite impleme
0440: 6e 74 73 20 74 68 65 20 66 6f 6c 6c 6f 77 20 73  nts the follow s
0450: 79 6e 74 61 78 3a 3c 2f 70 3e 0a 3c 70 3e 3c 75  yntax:</p>.<p><u
0460: 6c 3e 0a 7d 0a 0a 66 6f 72 65 61 63 68 20 7b 73  l>.}..foreach {s
0470: 65 63 74 69 6f 6e 7d 20 5b 6c 73 6f 72 74 20 2d  ection} [lsort -
0480: 69 6e 64 65 78 20 30 20 2d 64 69 63 74 69 6f 6e  index 0 -diction
0490: 61 72 79 20 7b 0a 20 20 7b 7b 43 52 45 41 54 45  ary {.  {{CREATE
04a0: 20 54 41 42 4c 45 7d 20 63 72 65 61 74 65 74 61   TABLE} createta
04b0: 62 6c 65 7d 0a 20 20 7b 7b 43 52 45 41 54 45 20  ble}.  {{CREATE 
04c0: 49 4e 44 45 58 7d 20 63 72 65 61 74 65 69 6e 64  INDEX} createind
04d0: 65 78 7d 0a 20 20 7b 56 41 43 55 55 4d 20 76 61  ex}.  {VACUUM va
04e0: 63 75 75 6d 7d 0a 20 20 7b 7b 44 52 4f 50 20 54  cuum}.  {{DROP T
04f0: 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 7d  ABLE} droptable}
0500: 0a 20 20 7b 7b 44 52 4f 50 20 49 4e 44 45 58 7d  .  {{DROP INDEX}
0510: 20 64 72 6f 70 69 6e 64 65 78 7d 0a 20 20 7b 49   dropindex}.  {I
0520: 4e 53 45 52 54 20 69 6e 73 65 72 74 7d 0a 20 20  NSERT insert}.  
0530: 7b 52 45 50 4c 41 43 45 20 72 65 70 6c 61 63 65  {REPLACE replace
0540: 7d 0a 20 20 7b 44 45 4c 45 54 45 20 64 65 6c 65  }.  {DELETE dele
0550: 74 65 7d 0a 20 20 7b 55 50 44 41 54 45 20 75 70  te}.  {UPDATE up
0560: 64 61 74 65 7d 0a 20 20 7b 53 45 4c 45 43 54 20  date}.  {SELECT 
0570: 73 65 6c 65 63 74 7d 0a 20 20 7b 63 6f 6d 6d 65  select}.  {comme
0580: 6e 74 20 63 6f 6d 6d 65 6e 74 7d 0a 20 20 7b 43  nt comment}.  {C
0590: 4f 50 59 20 63 6f 70 79 7d 0a 20 20 7b 45 58 50  OPY copy}.  {EXP
05a0: 4c 41 49 4e 20 65 78 70 6c 61 69 6e 7d 0a 20 20  LAIN explain}.  
05b0: 7b 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70 72  {expression expr
05c0: 7d 0a 20 20 7b 7b 42 45 47 49 4e 20 54 52 41 4e  }.  {{BEGIN TRAN
05d0: 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63  SACTION} transac
05e0: 74 69 6f 6e 7d 0a 20 20 7b 7b 43 4f 4d 4d 49 54  tion}.  {{COMMIT
05f0: 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72   TRANSACTION} tr
0600: 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b 7b 45  ansaction}.  {{E
0610: 4e 44 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20  ND TRANSACTION} 
0620: 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b  transaction}.  {
0630: 7b 52 4f 4c 4c 42 41 43 4b 20 54 52 41 4e 53 41  {ROLLBACK TRANSA
0640: 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69  CTION} transacti
0650: 6f 6e 7d 0a 20 20 7b 50 52 41 47 4d 41 20 70 72  on}.  {PRAGMA pr
0660: 61 67 6d 61 7d 0a 20 20 7b 7b 4f 4e 20 43 4f 4e  agma}.  {{ON CON
0670: 46 4c 49 43 54 20 63 6c 61 75 73 65 7d 20 63 6f  FLICT clause} co
0680: 6e 66 6c 69 63 74 7d 0a 20 20 7b 7b 43 52 45 41  nflict}.  {{CREA
0690: 54 45 20 56 49 45 57 7d 20 63 72 65 61 74 65 76  TE VIEW} createv
06a0: 69 65 77 7d 0a 20 20 7b 7b 44 52 4f 50 20 56 49  iew}.  {{DROP VI
06b0: 45 57 7d 20 64 72 6f 70 76 69 65 77 7d 0a 20 20  EW} dropview}.  
06c0: 7b 7b 43 52 45 41 54 45 20 54 52 49 47 47 45 52  {{CREATE TRIGGER
06d0: 7d 20 63 72 65 61 74 65 74 72 69 67 67 65 72 7d  } createtrigger}
06e0: 0a 20 20 7b 7b 44 52 4f 50 20 54 52 49 47 47 45  .  {{DROP TRIGGE
06f0: 52 7d 20 64 72 6f 70 74 72 69 67 67 65 72 7d 0a  R} droptrigger}.
0700: 20 20 7b 7b 41 54 54 41 43 48 20 44 41 54 41 42    {{ATTACH DATAB
0710: 41 53 45 7d 20 61 74 74 61 63 68 7d 0a 20 20 7b  ASE} attach}.  {
0720: 7b 44 45 54 41 43 48 20 44 41 54 41 42 41 53 45  {DETACH DATABASE
0730: 7d 20 64 65 74 61 63 68 7d 0a 7d 5d 20 7b 0a 20  } detach}.}] {. 
0740: 20 70 75 74 73 20 22 3c 6c 69 3e 3c 61 20 68 72   puts "<li><a hr
0750: 65 66 3d 5c 22 23 5b 6c 69 6e 64 65 78 20 24 73  ef=\"#[lindex $s
0760: 65 63 74 69 6f 6e 20 31 5d 5c 22 3e 5b 6c 69 6e  ection 1]\">[lin
0770: 64 65 78 20 24 73 65 63 74 69 6f 6e 20 30 5d 3c  dex $section 0]<
0780: 2f 61 3e 3c 2f 6c 69 3e 22 0a 7d 0a 70 75 74 73  /a></li>".}.puts
0790: 20 7b 3c 2f 75 6c 3e 3c 2f 70 3e 0a 0a 3c 70 3e   {</ul></p>..<p>
07a0: 44 65 74 61 69 6c 73 20 6f 6e 20 74 68 65 20 69  Details on the i
07b0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
07c0: 20 65 61 63 68 20 63 6f 6d 6d 61 6e 64 20 61 72   each command ar
07d0: 65 20 70 72 6f 76 69 64 65 64 20 69 6e 0a 74 68  e provided in.th
07e0: 65 20 73 65 71 75 65 6c 2e 3c 2f 70 3e 0a 7d 0a  e sequel.</p>.}.
07f0: 0a 70 72 6f 63 20 53 79 6e 74 61 78 20 7b 61 72  .proc Syntax {ar
0800: 67 73 7d 20 7b 0a 20 20 70 75 74 73 20 7b 3c 74  gs} {.  puts {<t
0810: 61 62 6c 65 20 63 65 6c 6c 70 61 64 64 69 6e 67  able cellpadding
0820: 3d 22 31 30 22 3e 7d 0a 20 20 66 6f 72 65 61 63  ="10">}.  foreac
0830: 68 20 7b 72 75 6c 65 20 62 6f 64 79 7d 20 24 61  h {rule body} $a
0840: 72 67 73 20 7b 0a 20 20 20 20 70 75 74 73 20 22  rgs {.    puts "
0850: 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 5c 22  <tr><td align=\"
0860: 72 69 67 68 74 5c 22 20 76 61 6c 69 67 6e 3d 5c  right\" valign=\
0870: 22 74 6f 70 5c 22 3e 22 0a 20 20 20 20 70 75 74  "top\">".    put
0880: 73 20 22 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f  s "<i><font colo
0890: 72 3d 5c 22 23 66 66 33 34 33 34 5c 22 3e 24 72  r=\"#ff3434\">$r
08a0: 75 6c 65 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 26 6e  ule</font></i>&n
08b0: 62 73 70 3b 3a 3a 3d 3c 2f 74 64 3e 22 0a 20 20  bsp;::=</td>".  
08c0: 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 3c 20    regsub -all < 
08d0: 24 62 6f 64 79 20 7b 25 4c 54 7d 20 62 6f 64 79  $body {%LT} body
08e0: 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  .    regsub -all
08f0: 20 3e 20 24 62 6f 64 79 20 7b 25 47 54 7d 20 62   > $body {%GT} b
0900: 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d  ody.    regsub -
0910: 61 6c 6c 20 25 4c 54 20 24 62 6f 64 79 20 7b 3c  all %LT $body {<
0920: 2f 66 6f 6e 74 3e 3c 2f 62 3e 3c 69 3e 3c 66 6f  /font></b><i><fo
0930: 6e 74 20 63 6f 6c 6f 72 3d 22 23 66 66 33 34 33  nt color="#ff343
0940: 34 22 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  4">} body.    re
0950: 67 73 75 62 20 2d 61 6c 6c 20 25 47 54 20 24 62  gsub -all %GT $b
0960: 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e  ody {</font></i>
0970: 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  <b><font color="
0980: 23 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a  #2c2cf0">} body.
0990: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
09a0: 7b 5b 5d 7c 5b 2a 3f 5d 7d 20 24 62 6f 64 79 20  {[]|[*?]} $body 
09b0: 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 26 3c 62 3e  {</font></b>&<b>
09c0: 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32 63  <font color="#2c
09d0: 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a 20 20 20  2cf0">} body.   
09e0: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e   regsub -all "\n
09f0: 22 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24  " [string trim $
0a00: 62 6f 64 79 5d 20 22 3c 62 72 3e 5c 6e 22 20 62  body] "<br>\n" b
0a10: 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d  ody.    regsub -
0a20: 61 6c 6c 20 22 5c 6e 20 20 2a 22 20 24 62 6f 64  all "\n  *" $bod
0a30: 79 20 22 5c 6e 5c 5c 26 6e 62 73 70 3b 5c 5c 26  y "\n\\&nbsp;\\&
0a40: 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c 26  nbsp;\\&nbsp;\\&
0a50: 6e 62 73 70 3b 22 20 62 6f 64 79 0a 20 20 20 20  nbsp;" body.    
0a60: 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 5b 7c 2c  regsub -all {[|,
0a70: 2e 2a 28 29 5d 7d 20 24 62 6f 64 79 20 7b 3c 62  .*()]} $body {<b
0a80: 69 67 3e 26 3c 2f 62 69 67 3e 7d 20 62 6f 64 79  ig>&</big>} body
0a90: 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c  .    regsub -all
0aa0: 20 7b 20 3d 20 7d 20 24 62 6f 64 79 20 7b 20 3c   { = } $body { <
0ab0: 62 69 67 3e 3d 3c 2f 62 69 67 3e 20 7d 20 62 6f  big>=</big> } bo
0ac0: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
0ad0: 6c 6c 20 7b 53 54 41 52 7d 20 24 62 6f 64 79 20  ll {STAR} $body 
0ae0: 7b 3c 62 69 67 3e 2a 3c 2f 62 69 67 3e 7d 20 62  {<big>*</big>} b
0af0: 6f 64 79 0a 20 20 20 20 23 23 20 54 68 65 73 65  ody.    ## These
0b00: 20 6d 65 74 61 63 68 61 72 61 63 74 65 72 73 20   metacharacters 
0b10: 6d 75 73 74 20 62 65 20 68 61 6e 64 6c 65 64 20  must be handled 
0b20: 74 6f 20 75 6e 64 6f 20 62 65 69 6e 67 0a 20 20  to undo being.  
0b30: 20 20 23 23 20 74 72 65 61 74 65 64 20 61 73 20    ## treated as 
0b40: 53 51 4c 20 70 75 6e 63 74 75 61 74 69 6f 6e 20  SQL punctuation 
0b50: 63 68 61 72 61 63 74 65 72 73 20 61 62 6f 76 65  characters above
0b60: 2e 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c  ..    regsub -al
0b70: 6c 20 7b 52 50 50 4c 55 53 7d 20 24 62 6f 64 79  l {RPPLUS} $body
0b80: 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 29 2b 3c   {</font></b>)+<
0b90: 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23  b><font color="#
0ba0: 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a 20  2c2cf0">} body. 
0bb0: 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b     regsub -all {
0bc0: 4c 50 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e  LP} $body {</fon
0bd0: 74 3e 3c 2f 62 3e 28 3c 62 3e 3c 66 6f 6e 74 20  t></b>(<b><font 
0be0: 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e  color="#2c2cf0">
0bf0: 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75  } body.    regsu
0c00: 62 20 2d 61 6c 6c 20 7b 52 50 7d 20 24 62 6f 64  b -all {RP} $bod
0c10: 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 29 3c  y {</font></b>)<
0c20: 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23  b><font color="#
0c30: 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a 20  2c2cf0">} body. 
0c40: 20 20 20 23 23 20 50 6c 61 63 65 20 74 68 65 20     ## Place the 
0c50: 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 6f  left-hand side o
0c60: 66 20 74 68 65 20 72 75 6c 65 20 69 6e 20 74 68  f the rule in th
0c70: 65 20 32 6e 64 20 74 61 62 6c 65 20 63 6f 6c 75  e 2nd table colu
0c80: 6d 6e 2e 0a 20 20 20 20 70 75 74 73 20 22 3c 74  mn..    puts "<t
0c90: 64 3e 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72  d><b><font color
0ca0: 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e 24 62 6f  =\"#2c2cf0\">$bo
0cb0: 64 79 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 3c 2f 74  dy</font></b></t
0cc0: 64 3e 3c 2f 74 72 3e 22 0a 20 20 7d 0a 20 20 70  d></tr>".  }.  p
0cd0: 75 74 73 20 7b 3c 2f 74 61 62 6c 65 3e 7d 0a 7d  uts {</table>}.}
0ce0: 0a 70 72 6f 63 20 4f 70 65 72 61 74 6f 72 20 7b  .proc Operator {
0cf0: 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e  name} {.  return
0d00: 20 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22   "<font color=\"
0d10: 23 32 63 32 63 66 30 5c 22 3e 3c 62 69 67 3e 24  #2c2cf0\"><big>$
0d20: 6e 61 6d 65 3c 2f 62 69 67 3e 3c 2f 66 6f 6e 74  name</big></font
0d30: 3e 22 0a 7d 0a 70 72 6f 63 20 4e 6f 6e 74 65 72  >".}.proc Nonter
0d40: 6d 69 6e 61 6c 20 7b 6e 61 6d 65 7d 20 7b 0a 20  minal {name} {. 
0d50: 20 72 65 74 75 72 6e 20 22 3c 69 3e 3c 66 6f 6e   return "<i><fon
0d60: 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66 33 34 33  t color=\"#ff343
0d70: 34 5c 22 3e 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e  4\">$name</font>
0d80: 3c 2f 69 3e 22 0a 7d 0a 70 72 6f 63 20 4b 65 79  </i>".}.proc Key
0d90: 77 6f 72 64 20 7b 6e 61 6d 65 7d 20 7b 0a 20 20  word {name} {.  
0da0: 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74 20 63 6f  return "<font co
0db0: 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30 5c 22 3e  lor=\"#2c2cf0\">
0dc0: 24 6e 61 6d 65 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a  $name</font>".}.
0dd0: 20 0a 0a 70 72 6f 63 20 53 65 63 74 69 6f 6e 20   ..proc Section 
0de0: 7b 6e 61 6d 65 20 7b 6c 61 62 65 6c 20 7b 7d 7d  {name {label {}}
0df0: 7d 20 7b 0a 20 20 70 75 74 73 20 22 5c 6e 3c 68  } {.  puts "\n<h
0e00: 72 20 2f 3e 22 0a 20 20 69 66 20 7b 24 6c 61 62  r />".  if {$lab
0e10: 65 6c 21 3d 22 22 7d 20 7b 0a 20 20 20 20 70 75  el!=""} {.    pu
0e20: 74 73 20 22 3c 61 20 6e 61 6d 65 3d 5c 22 24 6c  ts "<a name=\"$l
0e30: 61 62 65 6c 5c 22 3e 3c 2f 61 3e 22 0a 20 20 7d  abel\"></a>".  }
0e40: 0a 20 20 70 75 74 73 20 22 3c 68 31 3e 24 6e 61  .  puts "<h1>$na
0e50: 6d 65 3c 2f 68 31 3e 5c 6e 22 0a 7d 0a 0a 70 72  me</h1>\n".}..pr
0e60: 6f 63 20 45 78 61 6d 70 6c 65 20 7b 74 65 78 74  oc Example {text
0e70: 7d 20 7b 0a 20 20 70 75 74 73 20 22 3c 62 6c 6f  } {.  puts "<blo
0e80: 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 24 74 65  ckquote><pre>$te
0e90: 78 74 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71  xt</pre></blockq
0ea0: 75 6f 74 65 3e 22 0a 7d 0a 0a 0a 53 65 63 74 69  uote>".}...Secti
0eb0: 6f 6e 20 7b 41 54 54 41 43 48 20 44 41 54 41 42  on {ATTACH DATAB
0ec0: 41 53 45 7d 20 61 74 74 61 63 68 0a 0a 53 79 6e  ASE} attach..Syn
0ed0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
0ee0: 6e 74 7d 20 7b 0a 41 54 54 41 43 48 20 5b 44 41  nt} {.ATTACH [DA
0ef0: 54 41 42 41 53 45 5d 20 3c 64 61 74 61 62 61 73  TABASE] <databas
0f00: 65 2d 66 69 6c 65 6e 61 6d 65 3e 20 41 53 20 3c  e-filename> AS <
0f10: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d  database-name>.}
0f20: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
0f30: 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45 20  ATTACH DATABASE 
0f40: 73 74 61 74 65 6d 65 6e 74 20 61 64 64 73 20 61  statement adds a
0f50: 20 70 72 65 65 78 69 73 74 69 6e 67 20 64 61 74   preexisting dat
0f60: 61 62 61 73 65 20 0a 66 69 6c 65 20 74 6f 20 74  abase .file to t
0f70: 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 61 62  he current datab
0f80: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20  ase connection. 
0f90: 20 49 66 20 74 68 65 20 66 69 6c 65 6e 61 6d 65   If the filename
0fa0: 20 63 6f 6e 74 61 69 6e 73 20 0a 70 75 6e 63 74   contains .punct
0fb0: 75 61 74 69 6f 6e 20 63 68 61 72 61 63 74 65 72  uation character
0fc0: 73 20 69 74 20 6d 75 73 74 20 62 65 20 71 75 6f  s it must be quo
0fd0: 74 65 64 2e 20 20 54 68 65 20 6e 61 6d 65 73 20  ted.  The names 
0fe0: 27 6d 61 69 6e 27 20 61 6e 64 20 0a 27 74 65 6d  'main' and .'tem
0ff0: 70 27 20 72 65 66 65 72 20 74 6f 20 74 68 65 20  p' refer to the 
1000: 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 61 6e  main database an
1010: 64 20 74 68 65 20 64 61 74 61 62 61 73 65 20 75  d the database u
1020: 73 65 64 20 66 6f 72 20 0a 74 65 6d 70 6f 72 61  sed for .tempora
1030: 72 79 20 74 61 62 6c 65 73 2e 20 20 54 68 65 73  ry tables.  Thes
1040: 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 61  e cannot be deta
1050: 63 68 65 64 2e 20 20 41 74 74 61 63 68 65 64 20  ched.  Attached 
1060: 64 61 74 61 62 61 73 65 73 20 0a 61 72 65 20 72  databases .are r
1070: 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65  emoved using the
1080: 20 3c 61 20 68 72 65 66 3d 22 23 64 65 74 61 63   <a href="#detac
1090: 68 22 3e 44 45 54 41 43 48 20 44 41 54 41 42 41  h">DETACH DATABA
10a0: 53 45 3c 2f 61 3e 20 0a 73 74 61 74 65 6d 65 6e  SE</a> .statemen
10b0: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20 63  t.</p>..<p>You c
10c0: 61 6e 20 72 65 61 64 20 66 72 6f 6d 20 61 6e 64  an read from and
10d0: 20 77 72 69 74 65 20 74 6f 20 61 6e 20 61 74 74   write to an att
10e0: 61 63 68 65 64 20 64 61 74 61 62 61 73 65 20 61  ached database a
10f0: 6e 64 20 79 6f 75 0a 63 61 6e 20 6d 6f 64 69 66  nd you.can modif
1100: 79 20 74 68 65 20 73 63 68 65 6d 61 20 6f 66 20  y the schema of 
1110: 74 68 65 20 61 74 74 61 63 68 65 64 20 64 61 74  the attached dat
1120: 61 62 61 73 65 2e 20 20 54 68 69 73 20 69 73 20  abase.  This is 
1130: 61 20 6e 65 77 0a 66 65 61 74 75 72 65 20 6f 66  a new.feature of
1140: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
1150: 33 2e 30 2e 20 20 49 6e 20 53 51 4c 69 74 65 20  3.0.  In SQLite 
1160: 32 2e 38 2c 20 73 63 68 65 6d 61 20 63 68 61 6e  2.8, schema chan
1170: 67 65 73 0a 74 6f 20 61 74 74 61 63 68 65 64 20  ges.to attached 
1180: 64 61 74 61 62 61 73 65 73 20 77 65 72 65 20 6e  databases were n
1190: 6f 74 20 61 6c 6c 6f 77 65 64 2e 3c 2f 70 3e 0a  ot allowed.</p>.
11a0: 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 63  .<p>You cannot c
11b0: 72 65 61 74 65 20 61 20 6e 65 77 20 74 61 62 6c  reate a new tabl
11c0: 65 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  e with the same 
11d0: 6e 61 6d 65 20 61 73 20 61 20 74 61 62 6c 65 20  name as a table 
11e0: 69 6e 20 0a 61 6e 20 61 74 74 61 63 68 65 64 20  in .an attached 
11f0: 64 61 74 61 62 61 73 65 2c 20 62 75 74 20 79 6f  database, but yo
1200: 75 20 63 61 6e 20 61 74 74 61 63 68 20 61 20 64  u can attach a d
1210: 61 74 61 62 61 73 65 20 77 68 69 63 68 20 63 6f  atabase which co
1220: 6e 74 61 69 6e 73 0a 74 61 62 6c 65 73 20 77 68  ntains.tables wh
1230: 6f 73 65 20 6e 61 6d 65 73 20 61 72 65 20 64 75  ose names are du
1240: 70 6c 69 63 61 74 65 73 20 6f 66 20 74 61 62 6c  plicates of tabl
1250: 65 73 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  es in the main d
1260: 61 74 61 62 61 73 65 2e 20 20 49 74 20 69 73 20  atabase.  It is 
1270: 0a 61 6c 73 6f 20 70 65 72 6d 69 73 73 69 62 6c  .also permissibl
1280: 65 20 74 6f 20 61 74 74 61 63 68 20 74 68 65 20  e to attach the 
1290: 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 66 69  same database fi
12a0: 6c 65 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65  le multiple time
12b0: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65  s.</p>..<p>Table
12c0: 73 20 69 6e 20 61 6e 20 61 74 74 61 63 68 65 64  s in an attached
12d0: 20 64 61 74 61 62 61 73 65 20 63 61 6e 20 62 65   database can be
12e0: 20 72 65 66 65 72 72 65 64 20 74 6f 20 75 73 69   referred to usi
12f0: 6e 67 20 74 68 65 20 73 79 6e 74 61 78 20 0a 3c  ng the syntax .<
1300: 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e  i>database-name.
1310: 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 20  table-name</i>. 
1320: 20 49 66 20 61 6e 20 61 74 74 61 63 68 65 64 20   If an attached 
1330: 74 61 62 6c 65 20 64 6f 65 73 6e 27 74 20 68 61  table doesn't ha
1340: 76 65 20 0a 61 20 64 75 70 6c 69 63 61 74 65 20  ve .a duplicate 
1350: 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68  table name in th
1360: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2c  e main database,
1370: 20 69 74 20 64 6f 65 73 6e 27 74 20 72 65 71 75   it doesn't requ
1380: 69 72 65 20 61 20 0a 64 61 74 61 62 61 73 65 20  ire a .database 
1390: 6e 61 6d 65 20 70 72 65 66 69 78 2e 20 20 57 68  name prefix.  Wh
13a0: 65 6e 20 61 20 64 61 74 61 62 61 73 65 20 69 73  en a database is
13b0: 20 61 74 74 61 63 68 65 64 2c 20 61 6c 6c 20 6f   attached, all o
13c0: 66 20 69 74 73 20 0a 74 61 62 6c 65 73 20 77 68  f its .tables wh
13d0: 69 63 68 20 64 6f 6e 27 74 20 68 61 76 65 20 64  ich don't have d
13e0: 75 70 6c 69 63 61 74 65 20 6e 61 6d 65 73 20 62  uplicate names b
13f0: 65 63 6f 6d 65 20 74 68 65 20 27 64 65 66 61 75  ecome the 'defau
1400: 6c 74 27 20 74 61 62 6c 65 0a 6f 66 20 74 68 61  lt' table.of tha
1410: 74 20 6e 61 6d 65 2e 20 20 41 6e 79 20 74 61 62  t name.  Any tab
1420: 6c 65 73 20 6f 66 20 74 68 61 74 20 6e 61 6d 65  les of that name
1430: 20 61 74 74 61 63 68 65 64 20 61 66 74 65 72 77   attached afterw
1440: 61 72 64 73 20 72 65 71 75 69 72 65 20 74 68 65  ards require the
1450: 20 74 61 62 6c 65 20 0a 70 72 65 66 69 78 2e 20   table .prefix. 
1460: 49 66 20 74 68 65 20 27 64 65 66 61 75 6c 74 27  If the 'default'
1470: 20 74 61 62 6c 65 20 6f 66 20 61 20 67 69 76 65   table of a give
1480: 6e 20 6e 61 6d 65 20 69 73 20 64 65 74 61 63 68  n name is detach
1490: 65 64 2c 20 74 68 65 6e 20 0a 74 68 65 20 6c 61  ed, then .the la
14a0: 73 74 20 74 61 62 6c 65 20 6f 66 20 74 68 61 74  st table of that
14b0: 20 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20 62   name attached b
14c0: 65 63 6f 6d 65 73 20 74 68 65 20 6e 65 77 20 64  ecomes the new d
14d0: 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  efault.</p>..<p>
14e0: 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 69 6e  .Transactions in
14f0: 76 6f 6c 76 69 6e 67 20 6d 75 6c 74 69 70 6c 65  volving multiple
1500: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
1510: 73 65 73 20 61 72 65 20 61 74 6f 6d 69 63 2c 0a  ses are atomic,.
1520: 61 73 73 75 6d 69 6e 67 20 74 68 61 74 20 74 68  assuming that th
1530: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20  e main database 
1540: 69 73 20 6e 6f 74 20 22 3a 6d 65 6d 6f 72 79 3a  is not ":memory:
1550: 22 2e 20 20 49 66 20 74 68 65 20 6d 61 69 6e 0a  ".  If the main.
1560: 64 61 74 61 62 61 73 65 20 69 73 20 22 3a 6d 65  database is ":me
1570: 6d 6f 72 79 3a 22 20 74 68 65 6e 20 0a 74 72 61  mory:" then .tra
1580: 6e 73 61 63 74 69 6f 6e 73 20 63 6f 6e 74 69 6e  nsactions contin
1590: 75 65 20 74 6f 20 62 65 20 61 74 6f 6d 69 63 20  ue to be atomic 
15a0: 77 69 74 68 69 6e 20 65 61 63 68 20 69 6e 64 69  within each indi
15b0: 76 69 64 75 61 6c 0a 64 61 74 61 62 61 73 65 20  vidual.database 
15c0: 66 69 6c 65 2e 20 42 75 74 20 69 66 20 74 68 65  file. But if the
15d0: 20 68 6f 73 74 20 63 6f 6d 70 75 74 65 72 20 63   host computer c
15e0: 72 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d 69  rashes in the mi
15f0: 64 64 6c 65 0a 6f 66 20 61 20 43 4f 4d 4d 49 54  ddle.of a COMMIT
1600: 20 77 68 65 72 65 20 74 77 6f 20 6f 72 20 6d 6f   where two or mo
1610: 72 65 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  re database file
1620: 73 20 61 72 65 20 75 70 64 61 74 65 64 2c 0a 73  s are updated,.s
1630: 6f 6d 65 20 6f 66 20 74 68 6f 73 65 20 66 69 6c  ome of those fil
1640: 65 73 20 6d 69 67 68 74 20 67 65 74 20 74 68 65  es might get the
1650: 20 63 68 61 6e 67 65 73 20 77 68 65 72 65 20 6f   changes where o
1660: 74 68 65 72 73 0a 6d 69 67 68 74 20 6e 6f 74 2e  thers.might not.
1670: 0a 41 74 6f 6d 69 63 20 63 6f 6d 6d 69 74 20 6f  .Atomic commit o
1680: 66 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  f attached datab
1690: 61 73 65 73 20 69 73 20 61 20 6e 65 77 20 66 65  ases is a new fe
16a0: 61 74 75 72 65 20 6f 66 20 53 51 4c 69 74 65 20  ature of SQLite 
16b0: 76 65 72 73 69 6f 6e 20 33 2e 30 2e 0a 49 6e 20  version 3.0..In 
16c0: 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 32  SQLite version 2
16d0: 2e 38 2c 20 61 6c 6c 20 63 6f 6d 6d 69 74 73 20  .8, all commits 
16e0: 74 6f 20 61 74 74 61 63 68 65 64 20 64 61 74 61  to attached data
16f0: 62 61 73 65 73 20 62 65 68 61 76 65 64 20 61 73  bases behaved as
1700: 20 69 66 0a 74 68 65 20 6d 61 69 6e 20 64 61 74   if.the main dat
1710: 61 62 61 73 65 20 77 65 72 65 20 22 3a 6d 65 6d  abase were ":mem
1720: 6f 72 79 3a 22 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e  ory:"..</p>..<p>
1730: 54 68 65 72 65 20 69 73 20 61 20 63 6f 6d 70 69  There is a compi
1740: 6c 65 2d 74 69 6d 65 20 6c 69 6d 69 74 20 6f 66  le-time limit of
1750: 20 31 30 20 61 74 74 61 63 68 65 64 20 64 61 74   10 attached dat
1760: 61 62 61 73 65 20 66 69 6c 65 73 2e 3c 2f 70 3e  abase files.</p>
1770: 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 42 45  .}...Section {BE
1780: 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d  GIN TRANSACTION}
1790: 20 74 72 61 6e 73 61 63 74 69 6f 6e 0a 0a 53 79   transaction..Sy
17a0: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
17b0: 65 6e 74 7d 20 7b 0a 42 45 47 49 4e 20 5b 54 52  ent} {.BEGIN [TR
17c0: 41 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65  ANSACTION [<name
17d0: 3e 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71  >]].}.Syntax {sq
17e0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45  l-statement} {.E
17f0: 4e 44 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20  ND [TRANSACTION 
1800: 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74  [<name>]].}.Synt
1810: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
1820: 74 7d 20 7b 0a 43 4f 4d 4d 49 54 20 5b 54 52 41  t} {.COMMIT [TRA
1830: 4e 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e  NSACTION [<name>
1840: 5d 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ]].}.Syntax {sql
1850: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52 4f  -statement} {.RO
1860: 4c 4c 42 41 43 4b 20 5b 54 52 41 4e 53 41 43 54  LLBACK [TRANSACT
1870: 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a  ION [<name>]].}.
1880: 0a 70 75 74 73 20 7b 0a 3c 70 3e 42 65 67 69 6e  .puts {.<p>Begin
1890: 6e 69 6e 67 20 69 6e 20 76 65 72 73 69 6f 6e 20  ning in version 
18a0: 32 2e 30 2c 20 53 51 4c 69 74 65 20 73 75 70 70  2.0, SQLite supp
18b0: 6f 72 74 73 20 74 72 61 6e 73 61 63 74 69 6f 6e  orts transaction
18c0: 73 20 77 69 74 68 0a 72 6f 6c 6c 62 61 63 6b 20  s with.rollback 
18d0: 61 6e 64 20 61 74 6f 6d 69 63 20 63 6f 6d 6d 69  and atomic commi
18e0: 74 2e 20 20 53 65 65 20 3c 61 20 68 72 65 66 3d  t.  See <a href=
18f0: 22 23 61 74 74 61 63 68 22 3e 41 54 54 41 43 48  "#attach">ATTACH
1900: 3c 2f 61 3e 20 66 6f 72 0a 61 6e 20 65 78 63 65  </a> for.an exce
1910: 70 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 72 65  ption when there
1920: 20 61 72 65 20 61 74 74 61 63 68 65 64 20 64 61   are attached da
1930: 74 61 62 61 73 65 73 2e 3c 2f 70 3e 0a 0a 3c 70  tabases.</p>..<p
1940: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 74 72  >The optional tr
1950: 61 6e 73 61 63 74 69 6f 6e 20 6e 61 6d 65 20 69  ansaction name i
1960: 73 20 69 67 6e 6f 72 65 64 2e 20 53 51 4c 69 74  s ignored. SQLit
1970: 65 20 63 75 72 72 65 6e 74 6c 79 20 0a 64 6f 65  e currently .doe
1980: 73 20 6e 6f 74 20 61 6c 6c 6f 77 20 6e 65 73 74  s not allow nest
1990: 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e  ed transactions.
19a0: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 4e 6f 20 63 68 61  </p>..<p>.No cha
19b0: 6e 67 65 73 20 63 61 6e 20 62 65 20 6d 61 64 65  nges can be made
19c0: 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65   to the database
19d0: 20 65 78 63 65 70 74 20 77 69 74 68 69 6e 20 61   except within a
19e0: 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a 41 6e   transaction..An
19f0: 79 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74 20 63  y command that c
1a00: 68 61 6e 67 65 73 20 74 68 65 20 64 61 74 61 62  hanges the datab
1a10: 61 73 65 20 28 62 61 73 69 63 61 6c 6c 79 2c 20  ase (basically, 
1a20: 61 6e 79 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 0a  any SQL command.
1a30: 6f 74 68 65 72 20 74 68 61 6e 20 53 45 4c 45 43  other than SELEC
1a40: 54 29 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69  T) will automati
1a50: 63 61 6c 6c 79 20 73 74 61 72 74 20 61 20 74 72  cally start a tr
1a60: 61 6e 73 61 63 74 69 6f 6e 20 69 66 0a 6f 6e 65  ansaction if.one
1a70: 20 69 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 20   is not already 
1a80: 69 6e 20 65 66 66 65 63 74 2e 20 20 41 75 74 6f  in effect.  Auto
1a90: 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72 74 65  matically starte
1aa0: 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 0a 61  d transactions.a
1ab0: 72 65 20 63 6f 6d 6d 69 74 74 65 64 20 61 74 20  re committed at 
1ac0: 74 68 65 20 63 6f 6e 63 6c 75 73 69 6f 6e 20 6f  the conclusion o
1ad0: 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e 0a 3c  f the command..<
1ae0: 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73 61 63  /p>..<p>.Transac
1af0: 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73 74 61  tions can be sta
1b00: 72 74 65 64 20 6d 61 6e 75 61 6c 6c 79 20 75 73  rted manually us
1b10: 69 6e 67 20 74 68 65 20 42 45 47 49 4e 0a 63 6f  ing the BEGIN.co
1b20: 6d 6d 61 6e 64 2e 20 20 53 75 63 68 20 74 72 61  mmand.  Such tra
1b30: 6e 73 61 63 74 69 6f 6e 73 20 75 73 75 61 6c 6c  nsactions usuall
1b40: 79 20 70 65 72 73 69 73 74 20 75 6e 74 69 6c 20  y persist until 
1b50: 74 68 65 20 6e 65 78 74 0a 43 4f 4d 4d 49 54 20  the next.COMMIT 
1b60: 6f 72 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6d 6d  or ROLLBACK comm
1b70: 61 6e 64 2e 20 20 42 75 74 20 61 20 74 72 61 6e  and.  But a tran
1b80: 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61 6c 73  saction will als
1b90: 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66 20 74  o .ROLLBACK if t
1ba0: 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20 63  he database is c
1bb0: 6c 6f 73 65 64 20 6f 72 20 69 66 20 61 6e 20 65  losed or if an e
1bc0: 72 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e 64 20  rror occurs.and 
1bd0: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63 6f 6e  the ROLLBACK con
1be0: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
1bf0: 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 73 70   algorithm is sp
1c00: 65 63 69 66 69 65 64 2e 0a 53 65 65 20 74 68 65  ecified..See the
1c10: 20 64 6f 63 75 6d 65 6e 74 69 6f 6e 20 6f 6e 20   documention on 
1c20: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 63 6f  the <a href="#co
1c30: 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c  nflict">ON CONFL
1c40: 49 43 54 3c 2f 61 3e 0a 63 6c 61 75 73 65 20 66  ICT</a>.clause f
1c50: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
1c60: 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20  formation about 
1c70: 74 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 63 6f 6e  the ROLLBACK.con
1c80: 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e  flict resolution
1c90: 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f 70 3e   algorithm..</p>
1ca0: 0a 0a 3c 70 3e 0a 54 68 65 20 43 4f 4d 4d 49 54  ..<p>.The COMMIT
1cb0: 20 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f   command does no
1cc0: 74 20 61 63 74 75 61 6c 6c 79 20 70 65 72 66 6f  t actually perfo
1cd0: 72 6d 20 61 20 63 6f 6d 6d 69 74 20 75 6e 74 69  rm a commit unti
1ce0: 6c 20 61 6c 6c 0a 70 65 6e 64 69 6e 67 20 53 51  l all.pending SQ
1cf0: 4c 20 63 6f 6d 6d 61 6e 64 73 20 66 69 6e 69 73  L commands finis
1d00: 68 2e 20 20 54 68 75 73 20 69 66 20 74 77 6f 20  h.  Thus if two 
1d10: 6f 72 20 6d 6f 72 65 20 53 45 4c 45 43 54 20 73  or more SELECT s
1d20: 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 69 6e  tatements.are in
1d30: 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20 70   the middle of p
1d40: 72 6f 63 65 73 73 69 6e 67 20 61 6e 64 20 61 20  rocessing and a 
1d50: 43 4f 4d 4d 49 54 20 69 73 20 65 78 65 63 75 74  COMMIT is execut
1d60: 65 64 2c 20 74 68 65 20 63 6f 6d 6d 69 74 0a 77  ed, the commit.w
1d70: 69 6c 6c 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79  ill not actually
1d80: 20 6f 63 63 75 72 20 75 6e 74 69 6c 20 61 6c 6c   occur until all
1d90: 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
1da0: 74 73 20 66 69 6e 69 73 68 2e 0a 3c 2f 70 3e 0a  ts finish..</p>.
1db0: 0a 3c 70 3e 0a 41 6e 20 61 74 74 65 6d 70 74 20  .<p>.An attempt 
1dc0: 74 6f 20 65 78 65 63 75 74 65 20 43 4f 4d 4d 49  to execute COMMI
1dd0: 54 20 6d 69 67 68 74 20 72 65 73 75 6c 74 20 69  T might result i
1de0: 6e 20 61 6e 20 53 51 4c 49 54 45 5f 42 55 53 59  n an SQLITE_BUSY
1df0: 20 72 65 74 75 72 6e 20 63 6f 64 65 2e 0a 54 68   return code..Th
1e00: 69 73 20 69 6e 64 69 63 61 74 65 73 20 74 68 61  is indicates tha
1e10: 74 20 61 6e 6f 74 68 65 72 20 74 68 72 65 61 64  t another thread
1e20: 20 6f 72 20 70 72 6f 63 65 73 73 20 68 61 64 20   or process had 
1e30: 61 20 72 65 61 64 20 6c 6f 63 6b 20 6f 6e 20 74  a read lock on t
1e40: 68 65 20 64 61 74 61 62 61 73 65 0a 74 68 61 74  he database.that
1e50: 20 70 72 65 76 65 6e 74 65 64 20 74 68 65 20 64   prevented the d
1e60: 61 74 61 62 61 73 65 20 66 72 6f 6d 20 62 65 69  atabase from bei
1e70: 6e 67 20 75 70 64 61 74 65 64 2e 20 20 57 68 65  ng updated.  Whe
1e80: 6e 20 43 4f 4d 4d 49 54 20 66 61 69 6c 73 20 69  n COMMIT fails i
1e90: 6e 20 74 68 69 73 0a 77 61 79 2c 20 74 68 65 20  n this.way, the 
1ea0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 72 65 6d 61  transaction rema
1eb0: 69 6e 73 20 61 63 74 69 76 65 20 61 6e 64 20 74  ins active and t
1ec0: 68 65 20 43 4f 4d 4d 49 54 20 63 61 6e 20 62 65  he COMMIT can be
1ed0: 20 72 65 74 72 69 65 64 20 6c 61 74 65 72 0a 61   retried later.a
1ee0: 66 74 65 72 20 74 68 65 20 72 65 61 64 65 72 20  fter the reader 
1ef0: 68 61 73 20 68 61 64 20 61 20 63 68 61 6e 63 65  has had a chance
1f00: 20 74 6f 20 63 6c 65 61 72 2e 0a 3c 2f 70 3e 0a   to clear..</p>.
1f10: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 63 6f 6d 6d  }...Section comm
1f20: 65 6e 74 20 63 6f 6d 6d 65 6e 74 0a 0a 53 79 6e  ent comment..Syn
1f30: 74 61 78 20 7b 63 6f 6d 6d 65 6e 74 7d 20 7b 3c  tax {comment} {<
1f40: 53 51 4c 2d 63 6f 6d 6d 65 6e 74 3e 20 7c 20 3c  SQL-comment> | <
1f50: 43 2d 63 6f 6d 6d 65 6e 74 3e 0a 7d 20 7b 53 51  C-comment>.} {SQ
1f60: 4c 2d 63 6f 6d 6d 65 6e 74 7d 20 7b 2d 2d 20 3c  L-comment} {-- <
1f70: 73 69 6e 67 6c 65 2d 6c 69 6e 65 3e 0a 7d 20 7b  single-line>.} {
1f80: 43 2d 63 6f 6d 6d 65 6e 74 7d 20 7b 2f 53 54 41  C-comment} {/STA
1f90: 52 20 3c 6d 75 6c 74 69 70 6c 65 2d 6c 69 6e 65  R <multiple-line
1fa0: 73 3e 20 5b 53 54 41 52 2f 5d 0a 7d 0a 0a 70 75  s> [STAR/].}..pu
1fb0: 74 73 20 7b 0a 3c 70 3e 20 43 6f 6d 6d 65 6e 74  ts {.<p> Comment
1fc0: 73 20 61 72 65 6e 27 74 20 53 51 4c 20 63 6f 6d  s aren't SQL com
1fd0: 6d 61 6e 64 73 2c 20 62 75 74 20 63 61 6e 20 6f  mands, but can o
1fe0: 63 63 75 72 20 69 6e 20 53 51 4c 20 71 75 65 72  ccur in SQL quer
1ff0: 69 65 73 2e 20 54 68 65 79 20 61 72 65 20 0a 74  ies. They are .t
2000: 72 65 61 74 65 64 20 61 73 20 77 68 69 74 65 73  reated as whites
2010: 70 61 63 65 20 62 79 20 74 68 65 20 70 61 72 73  pace by the pars
2020: 65 72 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65  er.  They can be
2030: 67 69 6e 20 61 6e 79 77 68 65 72 65 20 77 68 69  gin anywhere whi
2040: 74 65 73 70 61 63 65 20 0a 63 61 6e 20 62 65 20  tespace .can be 
2050: 66 6f 75 6e 64 2c 20 69 6e 63 6c 75 64 69 6e 67  found, including
2060: 20 69 6e 73 69 64 65 20 65 78 70 72 65 73 73 69   inside expressi
2070: 6f 6e 73 20 74 68 61 74 20 73 70 61 6e 20 6d 75  ons that span mu
2080: 6c 74 69 70 6c 65 20 6c 69 6e 65 73 2e 0a 3c 2f  ltiple lines..</
2090: 70 3e 0a 0a 3c 70 3e 20 53 51 4c 20 63 6f 6d 6d  p>..<p> SQL comm
20a0: 65 6e 74 73 20 6f 6e 6c 79 20 65 78 74 65 6e 64  ents only extend
20b0: 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74   to the end of t
20c0: 68 65 20 63 75 72 72 65 6e 74 20 6c 69 6e 65 2e  he current line.
20d0: 3c 2f 70 3e 0a 0a 3c 70 3e 20 43 20 63 6f 6d 6d  </p>..<p> C comm
20e0: 65 6e 74 73 20 63 61 6e 20 73 70 61 6e 20 61 6e  ents can span an
20f0: 79 20 6e 75 6d 62 65 72 20 6f 66 20 6c 69 6e 65  y number of line
2100: 73 2e 20 20 49 66 20 74 68 65 72 65 20 69 73 20  s.  If there is 
2110: 6e 6f 20 74 65 72 6d 69 6e 61 74 69 6e 67 0a 64  no terminating.d
2120: 65 6c 69 6d 69 74 65 72 2c 20 74 68 65 79 20 65  elimiter, they e
2130: 78 74 65 6e 64 20 74 6f 20 74 68 65 20 65 6e 64  xtend to the end
2140: 20 6f 66 20 74 68 65 20 69 6e 70 75 74 2e 20 20   of the input.  
2150: 54 68 69 73 20 69 73 20 6e 6f 74 20 74 72 65 61  This is not trea
2160: 74 65 64 20 61 73 0a 61 6e 20 65 72 72 6f 72 2e  ted as.an error.
2170: 20 20 41 20 6e 65 77 20 53 51 4c 20 73 74 61 74    A new SQL stat
2180: 65 6d 65 6e 74 20 63 61 6e 20 62 65 67 69 6e 20  ement can begin 
2190: 6f 6e 20 61 20 6c 69 6e 65 20 61 66 74 65 72 20  on a line after 
21a0: 61 20 6d 75 6c 74 69 6c 69 6e 65 0a 63 6f 6d 6d  a multiline.comm
21b0: 65 6e 74 20 65 6e 64 73 2e 20 20 43 20 63 6f 6d  ent ends.  C com
21c0: 6d 65 6e 74 73 20 63 61 6e 20 62 65 20 65 6d 62  ments can be emb
21d0: 65 64 64 65 64 20 61 6e 79 77 68 65 72 65 20 77  edded anywhere w
21e0: 68 69 74 65 73 70 61 63 65 20 63 61 6e 20 6f 63  hitespace can oc
21f0: 63 75 72 2c 0a 69 6e 63 6c 75 64 69 6e 67 20 69  cur,.including i
2200: 6e 73 69 64 65 20 65 78 70 72 65 73 73 69 6f 6e  nside expression
2210: 73 2c 20 61 6e 64 20 69 6e 20 74 68 65 20 6d 69  s, and in the mi
2220: 64 64 6c 65 20 6f 66 20 6f 74 68 65 72 20 53 51  ddle of other SQ
2230: 4c 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 43 20  L statements..C 
2240: 63 6f 6d 6d 65 6e 74 73 20 64 6f 20 6e 6f 74 20  comments do not 
2250: 6e 65 73 74 2e 20 20 53 51 4c 20 63 6f 6d 6d 65  nest.  SQL comme
2260: 6e 74 73 20 69 6e 73 69 64 65 20 61 20 43 20 63  nts inside a C c
2270: 6f 6d 6d 65 6e 74 20 77 69 6c 6c 20 62 65 20 69  omment will be i
2280: 67 6e 6f 72 65 64 2e 0a 3c 2f 70 3e 0a 7d 0a 0a  gnored..</p>.}..
2290: 0a 53 65 63 74 69 6f 6e 20 43 4f 50 59 20 63 6f  .Section COPY co
22a0: 70 79 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  py..Syntax {sql-
22b0: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 43 4f 50  statement} {.COP
22c0: 59 20 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74  Y [ OR <conflict
22d0: 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c  -algorithm> ] [<
22e0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
22f0: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 46  ] <table-name> F
2300: 52 4f 4d 20 3c 66 69 6c 65 6e 61 6d 65 3e 0a 5b  ROM <filename>.[
2310: 20 55 53 49 4e 47 20 44 45 4c 49 4d 49 54 45 52   USING DELIMITER
2320: 53 20 3c 64 65 6c 69 6d 3e 20 5d 0a 7d 0a 0a 70  S <delim> ].}..p
2330: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 4f 50  uts {.<p>The COP
2340: 59 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 76 61  Y command is ava
2350: 69 6c 61 62 6c 65 20 69 6e 20 53 51 4c 69 74 65  ilable in SQLite
2360: 20 76 65 72 73 69 6f 6e 20 32 2e 38 20 61 6e 64   version 2.8 and
2370: 20 65 61 72 6c 69 65 72 2e 0a 54 68 65 20 43 4f   earlier..The CO
2380: 50 59 20 63 6f 6d 6d 61 6e 64 20 68 61 73 20 62  PY command has b
2390: 65 65 6e 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d  een removed from
23a0: 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20   SQLite version 
23b0: 33 2e 30 20 64 75 65 20 74 6f 0a 63 6f 6d 70 6c  3.0 due to.compl
23c0: 69 63 61 74 69 6f 6e 73 20 69 6e 20 74 72 79 69  ications in tryi
23d0: 6e 67 20 74 6f 20 73 75 70 70 6f 72 74 20 69 74  ng to support it
23e0: 20 69 6e 20 61 20 6d 69 78 65 64 20 55 54 46 2d   in a mixed UTF-
23f0: 38 2f 31 36 20 65 6e 76 69 72 6f 6e 6d 65 6e 74  8/16 environment
2400: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 43  ..</p>..<p>The C
2410: 4f 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61  OPY command is a
2420: 6e 20 65 78 74 65 6e 73 69 6f 6e 20 75 73 65 64  n extension used
2430: 20 74 6f 20 6c 6f 61 64 20 6c 61 72 67 65 20 61   to load large a
2440: 6d 6f 75 6e 74 73 20 6f 66 0a 64 61 74 61 20 69  mounts of.data i
2450: 6e 74 6f 20 61 20 74 61 62 6c 65 2e 20 20 49 74  nto a table.  It
2460: 20 69 73 20 6d 6f 64 65 6c 65 64 20 61 66 74 65   is modeled afte
2470: 72 20 61 20 73 69 6d 69 6c 61 72 20 63 6f 6d 6d  r a similar comm
2480: 61 6e 64 20 66 6f 75 6e 64 0a 69 6e 20 50 6f 73  and found.in Pos
2490: 74 67 72 65 53 51 4c 2e 20 20 49 6e 20 66 61 63  tgreSQL.  In fac
24a0: 74 2c 20 74 68 65 20 53 51 4c 69 74 65 20 43 4f  t, the SQLite CO
24b0: 50 59 20 63 6f 6d 6d 61 6e 64 20 69 73 20 73 70  PY command is sp
24c0: 65 63 69 66 69 63 61 6c 6c 79 0a 64 65 73 69 67  ecifically.desig
24d0: 6e 65 64 20 74 6f 20 62 65 20 61 62 6c 65 20 74  ned to be able t
24e0: 6f 20 72 65 61 64 20 74 68 65 20 6f 75 74 70 75  o read the outpu
24f0: 74 20 6f 66 20 74 68 65 20 50 6f 73 74 67 72 65  t of the Postgre
2500: 53 51 4c 20 64 75 6d 70 0a 75 74 69 6c 69 74 79  SQL dump.utility
2510: 20 3c 62 3e 70 67 5f 64 75 6d 70 3c 2f 62 3e 20   <b>pg_dump</b> 
2520: 73 6f 20 74 68 61 74 20 64 61 74 61 20 63 61 6e  so that data can
2530: 20 62 65 20 65 61 73 69 6c 79 20 74 72 61 6e 73   be easily trans
2540: 66 65 72 72 65 64 20 66 72 6f 6d 0a 50 6f 73 74  ferred from.Post
2550: 67 72 65 53 51 4c 20 69 6e 74 6f 20 53 51 4c 69  greSQL into SQLi
2560: 74 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  te.</p>..<p>The 
2570: 74 61 62 6c 65 2d 6e 61 6d 65 20 69 73 20 74 68  table-name is th
2580: 65 20 6e 61 6d 65 20 6f 66 20 61 6e 20 65 78 69  e name of an exi
2590: 73 74 69 6e 67 20 74 61 62 6c 65 20 77 68 69 63  sting table whic
25a0: 68 20 69 73 20 74 6f 0a 62 65 20 66 69 6c 6c 65  h is to.be fille
25b0: 64 20 77 69 74 68 20 64 61 74 61 2e 20 20 54 68  d with data.  Th
25c0: 65 20 66 69 6c 65 6e 61 6d 65 20 69 73 20 61 20  e filename is a 
25d0: 73 74 72 69 6e 67 20 6f 72 20 69 64 65 6e 74 69  string or identi
25e0: 66 69 65 72 20 74 68 61 74 0a 6e 61 6d 65 73 20  fier that.names 
25f0: 61 20 66 69 6c 65 20 66 72 6f 6d 20 77 68 69 63  a file from whic
2600: 68 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20 72  h data will be r
2610: 65 61 64 2e 20 20 54 68 65 20 66 69 6c 65 6e 61  ead.  The filena
2620: 6d 65 20 63 61 6e 20 62 65 0a 74 68 65 20 3c 62  me can be.the <b
2630: 3e 53 54 44 49 4e 3c 2f 62 3e 20 74 6f 20 72 65  >STDIN</b> to re
2640: 61 64 20 64 61 74 61 20 66 72 6f 6d 20 73 74 61  ad data from sta
2650: 6e 64 61 72 64 20 69 6e 70 75 74 2e 3c 2f 70 3e  ndard input.</p>
2660: 0a 0a 3c 70 3e 45 61 63 68 20 6c 69 6e 65 20 6f  ..<p>Each line o
2670: 66 20 74 68 65 20 69 6e 70 75 74 20 66 69 6c 65  f the input file
2680: 20 69 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e   is converted in
2690: 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 65 63 6f  to a single reco
26a0: 72 64 0a 69 6e 20 74 68 65 20 74 61 62 6c 65 2e  rd.in the table.
26b0: 20 20 43 6f 6c 75 6d 6e 73 20 61 72 65 20 73 65    Columns are se
26c0: 70 61 72 61 74 65 64 20 62 79 20 74 61 62 73 2e  parated by tabs.
26d0: 20 20 49 66 20 61 20 74 61 62 20 6f 63 63 75 72    If a tab occur
26e0: 73 20 61 73 0a 64 61 74 61 20 77 69 74 68 69 6e  s as.data within
26f0: 20 61 20 63 6f 6c 75 6d 6e 2c 20 74 68 65 6e 20   a column, then 
2700: 74 68 61 74 20 74 61 62 20 69 73 20 70 72 65 63  that tab is prec
2710: 65 64 65 64 20 62 79 20 61 20 62 61 73 6b 73 6c  eded by a basksl
2720: 61 73 68 20 22 5c 22 0a 63 68 61 72 61 63 74 65  ash "\".characte
2730: 72 2e 20 20 41 20 62 61 73 6b 73 6c 61 73 68 20  r.  A baskslash 
2740: 69 6e 20 74 68 65 20 64 61 74 61 20 61 70 70 65  in the data appe
2750: 61 72 73 20 61 73 20 74 77 6f 20 62 61 63 6b 73  ars as two backs
2760: 6c 61 73 68 65 73 20 69 6e 0a 61 20 72 6f 77 2e  lashes in.a row.
2770: 20 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 55    The optional U
2780: 53 49 4e 47 20 44 45 4c 49 4d 49 54 45 52 53 20  SING DELIMITERS 
2790: 63 6c 61 75 73 65 20 63 61 6e 20 73 70 65 63 69  clause can speci
27a0: 66 79 20 61 20 64 65 6c 69 6d 69 74 65 72 0a 6f  fy a delimiter.o
27b0: 74 68 65 72 20 74 68 61 6e 20 74 61 62 2e 3c 2f  ther than tab.</
27c0: 70 3e 0a 0a 3c 70 3e 49 66 20 61 20 63 6f 6c 75  p>..<p>If a colu
27d0: 6d 6e 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  mn consists of t
27e0: 68 65 20 63 68 61 72 61 63 74 65 72 20 22 5c 4e  he character "\N
27f0: 22 2c 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69  ", that column i
2800: 73 20 66 69 6c 6c 65 64 0a 77 69 74 68 20 74 68  s filled.with th
2810: 65 20 76 61 6c 75 65 20 4e 55 4c 4c 2e 3c 2f 70  e value NULL.</p
2820: 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
2830: 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
2840: 73 65 20 61 6c 6c 6f 77 73 20 74 68 65 20 73 70  se allows the sp
2850: 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 61  ecification of a
2860: 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f  n alternative.co
2870: 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63  nstraint conflic
2880: 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
2890: 6f 72 69 74 68 6d 20 74 6f 20 75 73 65 20 66 6f  orithm to use fo
28a0: 72 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  r this one comma
28b0: 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
28c0: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
28d0: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
28e0: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
28f0: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
2900: 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  formation.</p>..
2910: 3c 70 3e 57 68 65 6e 20 74 68 65 20 69 6e 70 75  <p>When the inpu
2920: 74 20 64 61 74 61 20 73 6f 75 72 63 65 20 69 73  t data source is
2930: 20 53 54 44 49 4e 2c 20 74 68 65 20 69 6e 70 75   STDIN, the inpu
2940: 74 20 63 61 6e 20 62 65 20 74 65 72 6d 69 6e 61  t can be termina
2950: 74 65 64 0a 62 79 20 61 20 6c 69 6e 65 20 74 68  ted.by a line th
2960: 61 74 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c 79  at contains only
2970: 20 61 20 62 61 73 6b 73 6c 61 73 68 20 61 6e 64   a baskslash and
2980: 20 61 20 64 6f 74 3a 7d 0a 70 75 74 73 20 22 5c   a dot:}.puts "\
2990: 22 5b 4f 70 65 72 61 74 6f 72 20 5c 5c 2e 5d 5c  "[Operator \\.]\
29a0: 22 2e 3c 2f 70 3e 22 0a 0a 0a 53 65 63 74 69 6f  ".</p>"...Sectio
29b0: 6e 20 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d  n {CREATE INDEX}
29c0: 20 63 72 65 61 74 65 69 6e 64 65 78 0a 0a 53 79   createindex..Sy
29d0: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
29e0: 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20 5b 55  ent} {.CREATE [U
29f0: 4e 49 51 55 45 5d 20 49 4e 44 45 58 20 3c 69 6e  NIQUE] INDEX <in
2a00: 64 65 78 2d 6e 61 6d 65 3e 20 0a 4f 4e 20 5b 3c  dex-name> .ON [<
2a10: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
2a20: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 28  ] <table-name> (
2a30: 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 20 5b   <column-name> [
2a40: 2c 20 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d  , <column-name>]
2a50: 2a 20 29 0a 5b 20 4f 4e 20 43 4f 4e 46 4c 49 43  * ).[ ON CONFLIC
2a60: 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f  T <conflict-algo
2a70: 72 69 74 68 6d 3e 20 5d 0a 7d 20 7b 63 6f 6c 75  rithm> ].} {colu
2a80: 6d 6e 2d 6e 61 6d 65 7d 20 7b 0a 3c 6e 61 6d 65  mn-name} {.<name
2a90: 3e 20 5b 20 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c  > [ COLLATE <col
2aa0: 6c 61 74 69 6f 6e 2d 6e 61 6d 65 3e 5d 20 5b 20  lation-name>] [ 
2ab0: 41 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 0a 0a  ASC | DESC ].}..
2ac0: 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52  puts {.<p>The CR
2ad0: 45 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61  EATE INDEX comma
2ae0: 6e 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74  nd consists of t
2af0: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
2b00: 41 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f  ATE INDEX" follo
2b10: 77 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20  wed.by the name 
2b20: 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78  of the new index
2b30: 2c 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 4f  , the keyword "O
2b40: 4e 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66 20  N", the name of 
2b50: 61 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72 65  a previously.cre
2b60: 61 74 65 64 20 74 61 62 6c 65 20 74 68 61 74 20  ated table that 
2b70: 69 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65 64  is to be indexed
2b80: 2c 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65  , and a parenthe
2b90: 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e 61  sized list of na
2ba0: 6d 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69  mes of.columns i
2bb0: 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74  n the table that
2bc0: 20 61 72 65 20 75 73 65 64 20 66 6f 72 20 74 68   are used for th
2bd0: 65 20 69 6e 64 65 78 20 6b 65 79 2e 0a 45 61 63  e index key..Eac
2be0: 68 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61  h column name ca
2bf0: 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  n be followed by
2c00: 20 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53 43   one of the "ASC
2c10: 22 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79 77  " or "DESC" keyw
2c20: 6f 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74 65  ords.to indicate
2c30: 20 73 6f 72 74 20 6f 72 64 65 72 2c 20 62 75 74   sort order, but
2c40: 20 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72 20   the sort order 
2c50: 69 73 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68  is ignored in th
2c60: 65 20 63 75 72 72 65 6e 74 0a 69 6d 70 6c 65 6d  e current.implem
2c70: 65 6e 74 61 74 69 6f 6e 2e 20 20 53 6f 72 74 69  entation.  Sorti
2c80: 6e 67 20 69 73 20 61 6c 77 61 79 73 20 64 6f 6e  ng is always don
2c90: 65 20 69 6e 20 61 73 63 65 6e 64 69 6e 67 20 6f  e in ascending o
2ca0: 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  rder.</p>..<p>Th
2cb0: 65 20 43 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65  e COLLATE clause
2cc0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 61 63 68 20   following each 
2cd0: 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 64 65 66 69  column name defi
2ce0: 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67 0a  nes a collating.
2cf0: 73 65 71 75 65 6e 63 65 20 75 73 65 64 20 66 6f  sequence used fo
2d00: 72 20 74 65 78 74 20 65 6e 74 69 72 65 73 20 69  r text entires i
2d10: 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 20 20  n that column.  
2d20: 54 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6c 6c  The default coll
2d30: 61 74 69 6e 67 0a 73 65 71 75 65 6e 63 65 20 69  ating.sequence i
2d40: 73 20 74 68 65 20 63 6f 6c 6c 61 74 69 6e 67 20  s the collating 
2d50: 73 65 71 75 65 6e 63 65 20 64 65 66 69 6e 65 64  sequence defined
2d60: 20 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e   for that column
2d70: 20 69 6e 20 74 68 65 0a 43 52 45 41 54 45 20 54   in the.CREATE T
2d80: 41 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 2e 20  ABLE statement. 
2d90: 20 4f 72 20 69 66 20 6e 6f 20 63 6f 6c 6c 61 74   Or if no collat
2da0: 69 6e 67 20 73 65 71 75 65 6e 63 65 20 69 73 20  ing sequence is 
2db0: 6f 74 68 65 72 77 69 73 65 20 64 65 66 69 6e 65  otherwise define
2dc0: 64 2c 0a 74 68 65 20 62 75 69 6c 74 2d 69 6e 20  d,.the built-in 
2dd0: 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74 69 6e 67  BINARY collating
2de0: 20 73 65 71 75 65 6e 63 65 20 69 73 20 75 73 65   sequence is use
2df0: 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 72 65  d.</p>..<p>There
2e00: 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72 61 72   are no arbitrar
2e10: 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68 65 20  y limits on the 
2e20: 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64 69 63 65  number of indice
2e30: 73 20 74 68 61 74 20 63 61 6e 20 62 65 0a 61 74  s that can be.at
2e40: 74 61 63 68 65 64 20 74 6f 20 61 20 73 69 6e 67  tached to a sing
2e50: 6c 65 20 74 61 62 6c 65 2c 20 6e 6f 72 20 6f 6e  le table, nor on
2e60: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   the number of c
2e70: 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69 6e 64  olumns in an ind
2e80: 65 78 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74  ex.</p>..<p>If t
2e90: 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77 6f 72  he UNIQUE keywor
2ea0: 64 20 61 70 70 65 61 72 73 20 62 65 74 77 65 65  d appears betwee
2eb0: 6e 20 43 52 45 41 54 45 20 61 6e 64 20 49 4e 44  n CREATE and IND
2ec0: 45 58 20 74 68 65 6e 20 64 75 70 6c 69 63 61 74  EX then duplicat
2ed0: 65 0a 69 6e 64 65 78 20 65 6e 74 72 69 65 73 20  e.index entries 
2ee0: 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e  are not allowed.
2ef0: 20 20 41 6e 79 20 61 74 74 65 6d 70 74 20 74 6f    Any attempt to
2f00: 20 69 6e 73 65 72 74 20 61 20 64 75 70 6c 69 63   insert a duplic
2f10: 61 74 65 20 65 6e 74 72 79 0a 77 69 6c 6c 20 72  ate entry.will r
2f20: 65 73 75 6c 74 20 69 6e 20 61 6e 20 65 72 72 6f  esult in an erro
2f30: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6f  r.</p>..<p>The o
2f40: 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63 74  ptional conflict
2f50: 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20 74  -clause allows t
2f60: 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e  he specification
2f70: 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74 69   of an alternati
2f80: 76 65 0a 64 65 66 61 75 6c 74 20 63 6f 6e 73 74  ve.default const
2f90: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
2fa0: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
2fb0: 74 68 6d 20 66 6f 72 20 74 68 69 73 20 69 6e 64  thm for this ind
2fc0: 65 78 2e 0a 54 68 69 73 20 6f 6e 6c 79 20 6d 61  ex..This only ma
2fd0: 6b 65 73 20 73 65 6e 73 65 20 69 66 20 74 68 65  kes sense if the
2fe0: 20 55 4e 49 51 55 45 20 6b 65 79 77 6f 72 64 20   UNIQUE keyword 
2ff0: 69 73 20 75 73 65 64 20 73 69 6e 63 65 20 6f 74  is used since ot
3000: 68 65 72 77 69 73 65 0a 74 68 65 72 65 20 61 72  herwise.there ar
3010: 65 20 6e 6f 74 20 63 6f 6e 73 74 72 61 69 6e 74  e not constraint
3020: 73 20 6f 6e 20 74 68 65 20 69 6e 64 65 78 2e 20  s on the index. 
3030: 20 54 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67   The default alg
3040: 6f 72 69 74 68 6d 20 69 73 0a 41 42 4f 52 54 2e  orithm is.ABORT.
3050: 20 20 49 66 20 61 20 43 4f 50 59 2c 20 49 4e 53    If a COPY, INS
3060: 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45 20 73  ERT, or UPDATE s
3070: 74 61 74 65 6d 65 6e 74 20 73 70 65 63 69 66 69  tatement specifi
3080: 65 73 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a  es a particular.
3090: 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74  conflict resolut
30a0: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74  ion algorithm, t
30b0: 68 61 74 20 61 6c 67 6f 72 69 74 68 6d 20 69 73  hat algorithm is
30c0: 20 75 73 65 64 20 69 6e 20 70 6c 61 63 65 20 6f   used in place o
30d0: 66 0a 74 68 65 20 64 65 66 61 75 6c 74 20 61 6c  f.the default al
30e0: 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66 69 65  gorithm specifie
30f0: 64 20 68 65 72 65 2e 0a 53 65 65 20 74 68 65 20  d here..See the 
3100: 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64 0a 3c  section titled.<
3110: 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c 69 63  a href="#conflic
3120: 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f  t">ON CONFLICT</
3130: 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61  a> for additiona
3140: 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f  l information.</
3150: 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 61 63 74  p>..<p>The exact
3160: 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20 43 52   text.of each CR
3170: 45 41 54 45 20 49 4e 44 45 58 20 73 74 61 74 65  EATE INDEX state
3180: 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64 20 69  ment is stored i
3190: 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f  n the <b>sqlite_
31a0: 6d 61 73 74 65 72 3c 2f 62 3e 0a 6f 72 20 3c 62  master</b>.or <b
31b0: 3e 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d 61 73  >sqlite_temp_mas
31c0: 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 2c 20 64  ter</b> table, d
31d0: 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74  epending on whet
31e0: 68 65 72 20 74 68 65 20 74 61 62 6c 65 0a 62 65  her the table.be
31f0: 69 6e 67 20 69 6e 64 65 78 65 64 20 69 73 20 74  ing indexed is t
3200: 65 6d 70 6f 72 61 72 79 2e 20 20 45 76 65 72 79  emporary.  Every
3210: 74 69 6d 65 20 74 68 65 20 64 61 74 61 62 61 73  time the databas
3220: 65 20 69 73 20 6f 70 65 6e 65 64 2c 0a 61 6c 6c  e is opened,.all
3230: 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 73 74   CREATE INDEX st
3240: 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 72 65 61  atements.are rea
3250: 64 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71  d from the <b>sq
3260: 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20  lite_master</b> 
3270: 74 61 62 6c 65 20 61 6e 64 20 75 73 65 64 20 74  table and used t
3280: 6f 20 72 65 67 65 6e 65 72 61 74 65 0a 53 51 4c  o regenerate.SQL
3290: 69 74 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 72  ite's internal r
32a0: 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66  epresentation of
32b0: 20 74 68 65 20 69 6e 64 65 78 20 6c 61 79 6f 75   the index layou
32c0: 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 64 65 78  t.</p>..<p>Index
32d0: 65 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 77  es are removed w
32e0: 69 74 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d  ith the <a href=
32f0: 22 23 64 72 6f 70 69 6e 64 65 78 22 3e 44 52 4f  "#dropindex">DRO
3300: 50 20 49 4e 44 45 58 3c 2f 61 3e 20 0a 63 6f 6d  P INDEX</a> .com
3310: 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  mand.</p>.}...Se
3320: 63 74 69 6f 6e 20 7b 43 52 45 41 54 45 20 54 41  ction {CREATE TA
3330: 42 4c 45 7d 20 7b 63 72 65 61 74 65 74 61 62 6c  BLE} {createtabl
3340: 65 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  e}..Syntax {sql-
3350: 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45 41 54  command} {.CREAT
3360: 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52  E [TEMP | TEMPOR
3370: 41 52 59 5d 20 54 41 42 4c 45 20 3c 74 61 62 6c  ARY] TABLE <tabl
3380: 65 2d 6e 61 6d 65 3e 20 28 0a 20 20 3c 63 6f 6c  e-name> (.  <col
3390: 75 6d 6e 2d 64 65 66 3e 20 5b 2c 20 3c 63 6f 6c  umn-def> [, <col
33a0: 75 6d 6e 2d 64 65 66 3e 5d 2a 0a 20 20 5b 2c 20  umn-def>]*.  [, 
33b0: 3c 63 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a 0a 29  <constraint>]*.)
33c0: 0a 7d 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d  .} {sql-command}
33d0: 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20   {.CREATE [TEMP 
33e0: 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 54 41 42  | TEMPORARY] TAB
33f0: 4c 45 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  LE [<database-na
3400: 6d 65 3e 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d  me>.] <table-nam
3410: 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73 74  e> AS <select-st
3420: 61 74 65 6d 65 6e 74 3e 0a 7d 20 7b 63 6f 6c 75  atement>.} {colu
3430: 6d 6e 2d 64 65 66 7d 20 7b 0a 3c 6e 61 6d 65 3e  mn-def} {.<name>
3440: 20 5b 3c 74 79 70 65 3e 5d 20 5b 5b 43 4f 4e 53   [<type>] [[CONS
3450: 54 52 41 49 4e 54 20 3c 6e 61 6d 65 3e 5d 20 3c  TRAINT <name>] <
3460: 63 6f 6c 75 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e  column-constrain
3470: 74 3e 5d 2a 0a 7d 20 7b 74 79 70 65 7d 20 7b 0a  t>]*.} {type} {.
3480: 3c 74 79 70 65 6e 61 6d 65 3e 20 7c 0a 3c 74 79  <typename> |.<ty
3490: 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75 6d 62 65  pename> ( <numbe
34a0: 72 3e 20 29 20 7c 0a 3c 74 79 70 65 6e 61 6d 65  r> ) |.<typename
34b0: 3e 20 28 20 3c 6e 75 6d 62 65 72 3e 20 2c 20 3c  > ( <number> , <
34c0: 6e 75 6d 62 65 72 3e 20 29 0a 7d 20 7b 63 6f 6c  number> ).} {col
34d0: 75 6d 6e 2d 63 6f 6e 73 74 72 61 69 6e 74 7d 20  umn-constraint} 
34e0: 7b 0a 4e 4f 54 20 4e 55 4c 4c 20 5b 20 3c 63 6f  {.NOT NULL [ <co
34f0: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d  nflict-clause> ]
3500: 20 7c 0a 50 52 49 4d 41 52 59 20 4b 45 59 20 5b   |.PRIMARY KEY [
3510: 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 20  <sort-order>] [ 
3520: 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  <conflict-clause
3530: 3e 20 5d 20 7c 0a 55 4e 49 51 55 45 20 5b 20 3c  > ] |.UNIQUE [ <
3540: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 3e  conflict-clause>
3550: 20 5d 20 7c 0a 43 48 45 43 4b 20 28 20 3c 65 78   ] |.CHECK ( <ex
3560: 70 72 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63  pr> ) [ <conflic
3570: 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 44 45  t-clause> ] |.DE
3580: 46 41 55 4c 54 20 3c 76 61 6c 75 65 3e 20 7c 0a  FAULT <value> |.
3590: 43 4f 4c 4c 41 54 45 20 3c 63 6f 6c 6c 61 74 69  COLLATE <collati
35a0: 6f 6e 2d 6e 61 6d 65 3e 0a 7d 20 7b 63 6f 6e 73  on-name>.} {cons
35b0: 74 72 61 69 6e 74 7d 20 7b 0a 50 52 49 4d 41 52  traint} {.PRIMAR
35c0: 59 20 4b 45 59 20 28 20 3c 63 6f 6c 75 6d 6e 2d  Y KEY ( <column-
35d0: 6c 69 73 74 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c  list> ) [ <confl
35e0: 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a  ict-clause> ] |.
35f0: 55 4e 49 51 55 45 20 28 20 3c 63 6f 6c 75 6d 6e  UNIQUE ( <column
3600: 2d 6c 69 73 74 3e 20 29 20 5b 20 3c 63 6f 6e 66  -list> ) [ <conf
3610: 6c 69 63 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c  lict-clause> ] |
3620: 0a 43 48 45 43 4b 20 28 20 3c 65 78 70 72 3e 20  .CHECK ( <expr> 
3630: 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c  ) [ <conflict-cl
3640: 61 75 73 65 3e 20 5d 0a 7d 20 7b 63 6f 6e 66 6c  ause> ].} {confl
3650: 69 63 74 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e  ict-clause} {.ON
3660: 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c   CONFLICT <confl
3670: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d  ict-algorithm>.}
3680: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 41 20 43 52  ..puts {.<p>A CR
3690: 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65  EATE TABLE state
36a0: 6d 65 6e 74 20 69 73 20 62 61 73 69 63 61 6c 6c  ment is basicall
36b0: 79 20 74 68 65 20 6b 65 79 77 6f 72 64 73 20 22  y the keywords "
36c0: 43 52 45 41 54 45 20 54 41 42 4c 45 22 0a 66 6f  CREATE TABLE".fo
36d0: 6c 6c 6f 77 65 64 20 62 79 20 74 68 65 20 6e 61  llowed by the na
36e0: 6d 65 20 6f 66 20 61 20 6e 65 77 20 74 61 62 6c  me of a new tabl
36f0: 65 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65  e and a parenthe
3700: 73 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 63 6f  sized list of co
3710: 6c 75 6d 6e 0a 64 65 66 69 6e 69 74 69 6f 6e 73  lumn.definitions
3720: 20 61 6e 64 20 63 6f 6e 73 74 72 61 69 6e 74 73   and constraints
3730: 2e 20 20 54 68 65 20 74 61 62 6c 65 20 6e 61 6d  .  The table nam
3740: 65 20 63 61 6e 20 62 65 20 65 69 74 68 65 72 20  e can be either 
3750: 61 6e 20 69 64 65 6e 74 69 66 69 65 72 0a 6f 72  an identifier.or
3760: 20 61 20 73 74 72 69 6e 67 2e 20 20 54 61 62 6c   a string.  Tabl
3770: 65 73 20 6e 61 6d 65 73 20 74 68 61 74 20 62 65  es names that be
3780: 67 69 6e 20 77 69 74 68 20 22 3c 62 3e 73 71 6c  gin with "<b>sql
3790: 69 74 65 5f 3c 2f 62 3e 22 20 61 72 65 20 72 65  ite_</b>" are re
37a0: 73 65 72 76 65 64 0a 66 6f 72 20 75 73 65 20 62  served.for use b
37b0: 79 20 74 68 65 20 65 6e 67 69 6e 65 2e 3c 2f 70  y the engine.</p
37c0: 3e 0a 0a 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d  >..<p>Each colum
37d0: 6e 20 64 65 66 69 6e 69 74 69 6f 6e 20 69 73 20  n definition is 
37e0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
37f0: 63 6f 6c 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20  column followed 
3800: 62 79 20 74 68 65 0a 64 61 74 61 74 79 70 65 20  by the.datatype 
3810: 66 6f 72 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c  for that column,
3820: 20 74 68 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72   then one or mor
3830: 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d  e optional colum
3840: 6e 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 53  n constraints..S
3850: 51 4c 69 74 65 20 69 73 20 3c 61 20 68 72 65 66  QLite is <a href
3860: 3d 22 64 61 74 61 74 79 70 65 73 2e 68 74 6d 6c  ="datatypes.html
3870: 22 3e 74 79 70 65 6c 65 73 73 3c 2f 61 3e 2e 0a  ">typeless</a>..
3880: 54 68 65 20 64 61 74 61 74 79 70 65 20 66 6f 72  The datatype for
3890: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64 6f 65 73   the column does
38a0: 20 6e 6f 74 20 72 65 73 74 72 69 63 74 20 77 68   not restrict wh
38b0: 61 74 20 64 61 74 61 20 6d 61 79 20 62 65 20 70  at data may be p
38c0: 75 74 0a 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d  ut.in that colum
38d0: 6e 2e 0a 41 6c 6c 20 69 6e 66 6f 72 6d 61 74 69  n..All informati
38e0: 6f 6e 20 69 73 20 73 74 6f 72 65 64 20 61 73 20  on is stored as 
38f0: 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65 64 20  null-terminated 
3900: 73 74 72 69 6e 67 73 2e 0a 54 68 65 20 55 4e 49  strings..The UNI
3910: 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 20 63  QUE constraint c
3920: 61 75 73 65 73 20 61 6e 20 69 6e 64 65 78 20 74  auses an index t
3930: 6f 20 62 65 20 63 72 65 61 74 65 64 20 6f 6e 20  o be created on 
3940: 74 68 65 20 73 70 65 63 69 66 69 65 64 0a 63 6f  the specified.co
3950: 6c 75 6d 6e 73 2e 20 20 54 68 69 73 20 69 6e 64  lumns.  This ind
3960: 65 78 20 6d 75 73 74 20 63 6f 6e 74 61 69 6e 20  ex must contain 
3970: 75 6e 69 71 75 65 20 6b 65 79 73 2e 0a 54 68 65  unique keys..The
3980: 20 44 45 46 41 55 4c 54 20 63 6f 6e 73 74 72 61   DEFAULT constra
3990: 69 6e 74 0a 73 70 65 63 69 66 69 65 73 20 61 20  int.specifies a 
39a0: 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 74 6f  default value to
39b0: 20 75 73 65 20 77 68 65 6e 20 64 6f 69 6e 67 20   use when doing 
39c0: 61 6e 20 49 4e 53 45 52 54 2e 0a 54 68 65 20 43  an INSERT..The C
39d0: 4f 4c 4c 41 54 45 20 63 6c 61 75 73 65 20 73 70  OLLATE clause sp
39e0: 65 63 69 66 69 65 73 20 77 68 61 74 20 74 65 78  ecifies what tex
39f0: 74 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63  t collating func
3a00: 74 69 6f 6e 20 74 6f 20 75 73 65 0a 77 68 65 6e  tion to use.when
3a10: 20 63 6f 6d 70 61 72 69 6e 67 20 74 65 78 74 20   comparing text 
3a20: 65 6e 74 72 69 65 73 20 66 6f 72 20 74 68 65 20  entries for the 
3a30: 63 6f 6c 75 6d 6e 2e 20 20 54 68 65 20 62 75 69  column.  The bui
3a40: 6c 74 2d 69 6e 20 42 49 4e 41 52 59 0a 63 6f 6c  lt-in BINARY.col
3a50: 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20  lating function 
3a60: 69 73 20 75 73 65 64 20 62 79 20 64 65 66 61 75  is used by defau
3a70: 6c 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 53 70 65  lt..</p>..<p>Spe
3a80: 63 69 66 79 69 6e 67 20 61 20 50 52 49 4d 41 52  cifying a PRIMAR
3a90: 59 20 4b 45 59 20 6e 6f 72 6d 61 6c 6c 79 20 6a  Y KEY normally j
3aa0: 75 73 74 20 63 72 65 61 74 65 73 20 61 20 55 4e  ust creates a UN
3ab0: 49 51 55 45 20 69 6e 64 65 78 0a 6f 6e 20 74 68  IQUE index.on th
3ac0: 65 20 70 72 69 6d 61 72 79 20 6b 65 79 2e 20 20  e primary key.  
3ad0: 48 6f 77 65 76 65 72 2c 20 69 66 20 70 72 69 6d  However, if prim
3ae0: 61 72 79 20 6b 65 79 20 69 73 20 6f 6e 20 61 20  ary key is on a 
3af0: 73 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 0a 74 68  single column.th
3b00: 61 74 20 68 61 73 20 64 61 74 61 74 79 70 65 20  at has datatype 
3b10: 49 4e 54 45 47 45 52 2c 20 74 68 65 6e 20 74 68  INTEGER, then th
3b20: 61 74 20 63 6f 6c 75 6d 6e 20 69 73 20 75 73 65  at column is use
3b30: 64 20 69 6e 74 65 72 6e 61 6c 6c 79 0a 61 73 20  d internally.as 
3b40: 74 68 65 20 61 63 74 75 61 6c 20 6b 65 79 20 6f  the actual key o
3b50: 66 20 74 68 65 20 42 2d 54 72 65 65 20 66 6f 72  f the B-Tree for
3b60: 20 74 68 65 20 74 61 62 6c 65 2e 20 20 54 68 69   the table.  Thi
3b70: 73 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65  s means that the
3b80: 20 63 6f 6c 75 6d 6e 0a 6d 61 79 20 6f 6e 6c 79   column.may only
3b90: 20 68 6f 6c 64 20 75 6e 69 71 75 65 20 69 6e 74   hold unique int
3ba0: 65 67 65 72 20 76 61 6c 75 65 73 2e 20 20 28 45  eger values.  (E
3bb0: 78 63 65 70 74 20 66 6f 72 20 74 68 69 73 20 6f  xcept for this o
3bc0: 6e 65 20 63 61 73 65 2c 0a 53 51 4c 69 74 65 20  ne case,.SQLite 
3bd0: 69 67 6e 6f 72 65 73 20 74 68 65 20 64 61 74 61  ignores the data
3be0: 74 79 70 65 20 73 70 65 63 69 66 69 63 61 74 69  type specificati
3bf0: 6f 6e 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 61 6e  on of columns an
3c00: 64 20 61 6c 6c 6f 77 73 0a 61 6e 79 20 6b 69 6e  d allows.any kin
3c10: 64 20 6f 66 20 64 61 74 61 20 74 6f 20 62 65 20  d of data to be 
3c20: 70 75 74 20 69 6e 20 61 20 63 6f 6c 75 6d 6e 20  put in a column 
3c30: 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 69 74  regardless of it
3c40: 73 20 64 65 63 6c 61 72 65 64 0a 64 61 74 61 74  s declared.datat
3c50: 79 70 65 2e 29 20 20 49 66 20 61 20 74 61 62 6c  ype.)  If a tabl
3c60: 65 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20  e does not have 
3c70: 61 6e 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  an INTEGER PRIMA
3c80: 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2c 0a 74  RY KEY column,.t
3c90: 68 65 6e 20 74 68 65 20 42 2d 54 72 65 65 20 6b  hen the B-Tree k
3ca0: 65 79 20 77 69 6c 6c 20 62 65 20 61 20 61 75 74  ey will be a aut
3cb0: 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e 65 72  omatically gener
3cc0: 61 74 65 64 20 69 6e 74 65 67 65 72 2e 20 20 54  ated integer.  T
3cd0: 68 65 0a 42 2d 54 72 65 65 20 6b 65 79 20 66 6f  he.B-Tree key fo
3ce0: 72 20 61 20 72 6f 77 20 63 61 6e 20 61 6c 77 61  r a row can alwa
3cf0: 79 73 20 62 65 20 61 63 63 65 73 73 65 64 20 75  ys be accessed u
3d00: 73 69 6e 67 20 6f 6e 65 20 6f 66 20 74 68 65 0a  sing one of the.
3d10: 73 70 65 63 69 61 6c 20 6e 61 6d 65 73 20 22 3c  special names "<
3d20: 62 3e 52 4f 57 49 44 3c 2f 62 3e 22 2c 20 22 3c  b>ROWID</b>", "<
3d30: 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20 6f 72 20 22  b>OID</b>", or "
3d40: 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f 62 3e 22 2e  <b>_ROWID_</b>".
3d50: 0a 54 68 69 73 20 69 73 20 74 72 75 65 20 72 65  .This is true re
3d60: 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74  gardless of whet
3d70: 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 72 65  her or not there
3d80: 20 69 73 20 61 6e 20 49 4e 54 45 47 45 52 0a 50   is an INTEGER.P
3d90: 52 49 4d 41 52 59 20 4b 45 59 2e 3c 2f 70 3e 0a  RIMARY KEY.</p>.
3da0: 0a 3c 70 3e 49 66 20 74 68 65 20 22 54 45 4d 50  .<p>If the "TEMP
3db0: 22 20 6f 72 20 22 54 45 4d 50 4f 52 41 52 59 22  " or "TEMPORARY"
3dc0: 20 6b 65 79 77 6f 72 64 20 6f 63 63 75 72 73 20   keyword occurs 
3dd0: 69 6e 20 62 65 74 77 65 65 6e 20 22 43 52 45 41  in between "CREA
3de0: 54 45 22 0a 61 6e 64 20 22 54 41 42 4c 45 22 20  TE".and "TABLE" 
3df0: 74 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20 74  then the table t
3e00: 68 61 74 20 69 73 20 63 72 65 61 74 65 64 20 69  hat is created i
3e10: 73 20 6f 6e 6c 79 20 76 69 73 69 62 6c 65 20 74  s only visible t
3e20: 6f 20 74 68 65 0a 70 72 6f 63 65 73 73 20 74 68  o the.process th
3e30: 61 74 20 6f 70 65 6e 65 64 20 74 68 65 20 64 61  at opened the da
3e40: 74 61 62 61 73 65 20 61 6e 64 20 69 73 20 61 75  tabase and is au
3e50: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c 65  tomatically dele
3e60: 74 65 64 20 77 68 65 6e 0a 74 68 65 20 64 61 74  ted when.the dat
3e70: 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 2e  abase is closed.
3e80: 20 20 41 6e 79 20 69 6e 64 69 63 65 73 20 63 72    Any indices cr
3e90: 65 61 74 65 64 20 6f 6e 20 61 20 74 65 6d 70 6f  eated on a tempo
3ea0: 72 61 72 79 20 74 61 62 6c 65 0a 61 72 65 20 61  rary table.are a
3eb0: 6c 73 6f 20 74 65 6d 70 6f 72 61 72 79 2e 20 20  lso temporary.  
3ec0: 54 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73  Temporary tables
3ed0: 20 61 6e 64 20 69 6e 64 69 63 65 73 20 61 72 65   and indices are
3ee0: 20 73 74 6f 72 65 64 20 69 6e 20 61 0a 73 65 70   stored in a.sep
3ef0: 61 72 61 74 65 20 66 69 6c 65 20 64 69 73 74 69  arate file disti
3f00: 6e 63 74 20 66 72 6f 6d 20 74 68 65 20 6d 61 69  nct from the mai
3f10: 6e 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 2e  n database file.
3f20: 3c 2f 70 3e 0a 0a 3c 70 3e 20 49 66 20 61 20 3c  </p>..<p> If a <
3f30: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 69  database-name> i
3f40: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
3f50: 6e 20 74 68 65 20 74 61 62 6c 65 20 69 73 20 63  n the table is c
3f60: 72 65 61 74 65 64 20 69 6e 20 0a 74 68 65 20 6e  reated in .the n
3f70: 61 6d 65 64 20 64 61 74 61 62 61 73 65 2e 20 49  amed database. I
3f80: 74 20 69 73 20 61 6e 20 65 72 72 6f 72 20 74 6f  t is an error to
3f90: 20 73 70 65 63 69 66 79 20 62 6f 74 68 20 61 20   specify both a 
3fa0: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 0a  <database-name>.
3fb0: 61 6e 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79  and the TEMP key
3fc0: 77 6f 72 64 2c 20 75 6e 6c 65 73 73 20 74 68 65  word, unless the
3fd0: 20 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e   <database-name>
3fe0: 20 69 73 20 22 74 65 6d 70 22 2e 20 49 66 20 6e   is "temp". If n
3ff0: 6f 0a 64 61 74 61 62 61 73 65 20 6e 61 6d 65 20  o.database name 
4000: 69 73 20 73 70 65 63 69 66 69 65 64 2c 20 61 6e  is specified, an
4010: 64 20 74 68 65 20 54 45 4d 50 20 6b 65 79 77 6f  d the TEMP keywo
4020: 72 64 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e  rd is not presen
4030: 74 2c 0a 74 68 65 20 74 61 62 6c 65 20 69 73 20  t,.the table is 
4040: 63 72 65 61 74 65 64 20 69 6e 20 74 68 65 20 6d  created in the m
4050: 61 69 6e 20 64 61 74 61 62 61 73 65 2e 3c 2f 70  ain database.</p
4060: 3e 0a 0a 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e  >..<p>The option
4070: 61 6c 20 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75  al conflict-clau
4080: 73 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 65 61 63  se following eac
4090: 68 20 63 6f 6e 73 74 72 61 69 6e 74 0a 61 6c 6c  h constraint.all
40a0: 6f 77 73 20 74 68 65 20 73 70 65 63 69 66 69 63  ows the specific
40b0: 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65  ation of an alte
40c0: 72 6e 61 74 69 76 65 20 64 65 66 61 75 6c 74 0a  rnative default.
40d0: 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c  constraint confl
40e0: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
40f0: 6c 67 6f 72 69 74 68 6d 20 66 6f 72 20 74 68 61  lgorithm for tha
4100: 74 20 63 6f 6e 73 74 72 61 69 6e 74 2e 0a 54 68  t constraint..Th
4110: 65 20 64 65 66 61 75 6c 74 20 69 73 20 61 62 6f  e default is abo
4120: 72 74 20 41 42 4f 52 54 2e 20 20 44 69 66 66 65  rt ABORT.  Diffe
4130: 72 65 6e 74 20 63 6f 6e 73 74 72 61 69 6e 74 73  rent constraints
4140: 20 77 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65   within the same
4150: 0a 74 61 62 6c 65 20 6d 61 79 20 68 61 76 65 20  .table may have 
4160: 64 69 66 66 65 72 65 6e 74 20 64 65 66 61 75 6c  different defaul
4170: 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
4180: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 73  ution algorithms
4190: 2e 0a 49 66 20 61 6e 20 43 4f 50 59 2c 20 49 4e  ..If an COPY, IN
41a0: 53 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45 20  SERT, or UPDATE 
41b0: 63 6f 6d 6d 61 6e 64 20 73 70 65 63 69 66 69 65  command specifie
41c0: 73 20 61 20 64 69 66 66 65 72 65 6e 74 20 63 6f  s a different co
41d0: 6e 66 6c 69 63 74 0a 72 65 73 6f 6c 75 74 69 6f  nflict.resolutio
41e0: 6e 20 61 6c 67 6f 72 69 74 68 6d 2c 20 74 68 65  n algorithm, the
41f0: 6e 20 74 68 61 74 20 61 6c 67 6f 72 69 74 68 6d  n that algorithm
4200: 20 69 73 20 75 73 65 64 20 69 6e 20 70 6c 61 63   is used in plac
4210: 65 20 6f 66 20 74 68 65 0a 64 65 66 61 75 6c 74  e of the.default
4220: 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69   algorithm speci
4230: 66 69 65 64 20 69 6e 20 74 68 65 20 43 52 45 41  fied in the CREA
4240: 54 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65  TE TABLE stateme
4250: 6e 74 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nt..See the sect
4260: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
4270: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
4280: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
4290: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
42a0: 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a  formation.</p>..
42b0: 3c 70 3e 43 48 45 43 4b 20 63 6f 6e 73 74 72 61  <p>CHECK constra
42c0: 69 6e 74 73 20 61 72 65 20 69 67 6e 6f 72 65 64  ints are ignored
42d0: 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
42e0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0a  implementation..
42f0: 53 75 70 70 6f 72 74 20 66 6f 72 20 43 48 45 43  Support for CHEC
4300: 4b 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 6d 61  K constraints ma
4310: 79 20 62 65 20 61 64 64 65 64 20 69 6e 20 74 68  y be added in th
4320: 65 20 66 75 74 75 72 65 2e 20 20 41 73 20 6f 66  e future.  As of
4330: 0a 76 65 72 73 69 6f 6e 20 32 2e 33 2e 30 2c 20  .version 2.3.0, 
4340: 4e 4f 54 20 4e 55 4c 4c 2c 20 50 52 49 4d 41 52  NOT NULL, PRIMAR
4350: 59 20 4b 45 59 2c 20 61 6e 64 20 55 4e 49 51 55  Y KEY, and UNIQU
4360: 45 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 6c  E constraints al
4370: 6c 0a 77 6f 72 6b 2e 3c 2f 70 3e 0a 0a 3c 70 3e  l.work.</p>..<p>
4380: 54 68 65 72 65 20 61 72 65 20 6e 6f 20 61 72 62  There are no arb
4390: 69 74 72 61 72 79 20 6c 69 6d 69 74 73 20 6f 6e  itrary limits on
43a0: 20 74 68 65 20 6e 75 6d 62 65 72 0a 6f 66 20 63   the number.of c
43b0: 6f 6c 75 6d 6e 73 20 6f 72 20 6f 6e 20 74 68 65  olumns or on the
43c0: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6e 73 74   number of const
43d0: 72 61 69 6e 74 73 20 69 6e 20 61 20 74 61 62 6c  raints in a tabl
43e0: 65 2e 0a 54 68 65 20 74 6f 74 61 6c 20 61 6d 6f  e..The total amo
43f0: 75 6e 74 20 6f 66 20 64 61 74 61 20 69 6e 20 61  unt of data in a
4400: 20 73 69 6e 67 6c 65 20 72 6f 77 20 69 73 20 6c   single row is l
4410: 69 6d 69 74 65 64 20 74 6f 20 61 62 6f 75 74 0a  imited to about.
4420: 31 20 6d 65 67 61 62 79 74 65 73 2e 20 20 28 54  1 megabytes.  (T
4430: 68 69 73 20 6c 69 6d 69 74 20 63 61 6e 20 62 65  his limit can be
4440: 20 69 6e 63 72 65 61 73 65 64 20 74 6f 20 31 36   increased to 16
4450: 4d 42 20 62 79 20 63 68 61 6e 67 69 6e 67 0a 61  MB by changing.a
4460: 20 73 69 6e 67 6c 65 20 23 64 65 66 69 6e 65 20   single #define 
4470: 69 6e 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f  in the source co
4480: 64 65 20 61 6e 64 20 72 65 63 6f 6d 70 69 6c 69  de and recompili
4490: 6e 67 2e 29 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ng.)</p>..<p>The
44a0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 41 53   CREATE TABLE AS
44b0: 20 66 6f 72 6d 20 64 65 66 69 6e 65 73 20 74 68   form defines th
44c0: 65 20 74 61 62 6c 65 20 74 6f 20 62 65 0a 74 68  e table to be.th
44d0: 65 20 72 65 73 75 6c 74 20 73 65 74 20 6f 66 20  e result set of 
44e0: 61 20 71 75 65 72 79 2e 20 20 54 68 65 20 6e 61  a query.  The na
44f0: 6d 65 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65  mes of the table
4500: 20 63 6f 6c 75 6d 6e 73 20 61 72 65 0a 74 68 65   columns are.the
4510: 20 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 63 6f   names of the co
4520: 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 72 65 73  lumns in the res
4530: 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ult.</p>..<p>The
4540: 20 65 78 61 63 74 20 74 65 78 74 0a 6f 66 20 65   exact text.of e
4550: 61 63 68 20 43 52 45 41 54 45 20 54 41 42 4c 45  ach CREATE TABLE
4560: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 73 74   statement is st
4570: 6f 72 65 64 20 69 6e 20 74 68 65 20 3c 62 3e 73  ored in the <b>s
4580: 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e  qlite_master</b>
4590: 0a 74 61 62 6c 65 2e 20 20 45 76 65 72 79 74 69  .table.  Everyti
45a0: 6d 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  me the database 
45b0: 69 73 20 6f 70 65 6e 65 64 2c 20 61 6c 6c 20 43  is opened, all C
45c0: 52 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74  REATE TABLE stat
45d0: 65 6d 65 6e 74 73 0a 61 72 65 20 72 65 61 64 20  ements.are read 
45e0: 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69  from the <b>sqli
45f0: 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61  te_master</b> ta
4600: 62 6c 65 20 61 6e 64 20 75 73 65 64 20 74 6f 20  ble and used to 
4610: 72 65 67 65 6e 65 72 61 74 65 0a 53 51 4c 69 74  regenerate.SQLit
4620: 65 27 73 20 69 6e 74 65 72 6e 61 6c 20 72 65 70  e's internal rep
4630: 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74  resentation of t
4640: 68 65 20 74 61 62 6c 65 20 6c 61 79 6f 75 74 2e  he table layout.
4650: 0a 49 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  .If the original
4660: 20 63 6f 6d 6d 61 6e 64 20 77 61 73 20 61 20 43   command was a C
4670: 52 45 41 54 45 20 54 41 42 4c 45 20 41 53 20 74  REATE TABLE AS t
4680: 68 65 6e 20 74 68 65 6e 20 61 6e 20 65 71 75 69  hen then an equi
4690: 76 61 6c 65 6e 74 0a 43 52 45 41 54 45 20 54 41  valent.CREATE TA
46a0: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73  BLE statement is
46b0: 20 73 79 6e 74 68 65 73 69 7a 65 64 20 61 6e 64   synthesized and
46c0: 20 73 74 6f 72 65 20 69 6e 20 3c 62 3e 73 71 6c   store in <b>sql
46d0: 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 69  ite_master</b>.i
46e0: 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 20 6f  n place of the o
46f0: 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 2e  riginal command.
4700: 0a 54 68 65 20 74 65 78 74 20 6f 66 20 43 52 45  .The text of CRE
4710: 41 54 45 20 54 45 4d 50 4f 52 41 52 59 20 54 41  ATE TEMPORARY TA
4720: 42 4c 45 20 73 74 61 74 65 6d 65 6e 74 73 20 61  BLE statements a
4730: 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65  re stored in the
4740: 0a 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70 5f  .<b>sqlite_temp_
4750: 6d 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65  master</b> table
4760: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65  ..</p>..<p>Table
4770: 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20 75 73  s are removed us
4780: 69 6e 67 20 74 68 65 20 3c 61 20 68 72 65 66 3d  ing the <a href=
4790: 22 23 64 72 6f 70 74 61 62 6c 65 22 3e 44 52 4f  "#droptable">DRO
47a0: 50 20 54 41 42 4c 45 3c 2f 61 3e 20 0a 73 74 61  P TABLE</a> .sta
47b0: 74 65 6d 65 6e 74 2e 20 20 3c 2f 70 3e 0a 7d 0a  tement.  </p>.}.
47c0: 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  ..Section {CREAT
47d0: 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74  E TRIGGER} creat
47e0: 65 74 72 69 67 67 65 72 0a 0a 53 79 6e 74 61 78  etrigger..Syntax
47f0: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
4800: 20 7b 0a 43 52 45 41 54 45 20 5b 54 45 4d 50 20   {.CREATE [TEMP 
4810: 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20 54 52 49  | TEMPORARY] TRI
4820: 47 47 45 52 20 3c 74 72 69 67 67 65 72 2d 6e 61  GGER <trigger-na
4830: 6d 65 3e 20 5b 20 42 45 46 4f 52 45 20 7c 20 41  me> [ BEFORE | A
4840: 46 54 45 52 20 5d 0a 3c 64 61 74 61 62 61 73 65  FTER ].<database
4850: 2d 65 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74  -event> ON [<dat
4860: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
4870: 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a 3c 74 72 69  table-name>.<tri
4880: 67 67 65 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a  gger-action>.}..
4890: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
48a0: 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45 20  ement} {.CREATE 
48b0: 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52  [TEMP | TEMPORAR
48c0: 59 5d 20 54 52 49 47 47 45 52 20 3c 74 72 69 67  Y] TRIGGER <trig
48d0: 67 65 72 2d 6e 61 6d 65 3e 20 49 4e 53 54 45 41  ger-name> INSTEA
48e0: 44 20 4f 46 0a 3c 64 61 74 61 62 61 73 65 2d 65  D OF.<database-e
48f0: 76 65 6e 74 3e 20 4f 4e 20 5b 3c 64 61 74 61 62  vent> ON [<datab
4900: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 76 69  ase-name> .] <vi
4910: 65 77 2d 6e 61 6d 65 3e 0a 3c 74 72 69 67 67 65  ew-name>.<trigge
4920: 72 2d 61 63 74 69 6f 6e 3e 0a 7d 0a 0a 53 79 6e  r-action>.}..Syn
4930: 74 61 78 20 7b 64 61 74 61 62 61 73 65 2d 65 76  tax {database-ev
4940: 65 6e 74 7d 20 7b 0a 44 45 4c 45 54 45 20 7c 20  ent} {.DELETE | 
4950: 0a 49 4e 53 45 52 54 20 7c 20 0a 55 50 44 41 54  .INSERT | .UPDAT
4960: 45 20 7c 20 0a 55 50 44 41 54 45 20 4f 46 20 3c  E | .UPDATE OF <
4970: 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 0a 7d 0a 0a  column-list>.}..
4980: 53 79 6e 74 61 78 20 7b 74 72 69 67 67 65 72 2d  Syntax {trigger-
4990: 61 63 74 69 6f 6e 7d 20 7b 0a 5b 20 46 4f 52 20  action} {.[ FOR 
49a0: 45 41 43 48 20 52 4f 57 20 7c 20 46 4f 52 20 45  EACH ROW | FOR E
49b0: 41 43 48 20 53 54 41 54 45 4d 45 4e 54 20 5d 20  ACH STATEMENT ] 
49c0: 5b 20 57 48 45 4e 20 3c 65 78 70 72 65 73 73 69  [ WHEN <expressi
49d0: 6f 6e 3e 20 5d 20 0a 42 45 47 49 4e 20 0a 20 20  on> ] .BEGIN .  
49e0: 3c 74 72 69 67 67 65 72 2d 73 74 65 70 3e 20 3b  <trigger-step> ;
49f0: 20 5b 20 3c 74 72 69 67 67 65 72 2d 73 74 65 70   [ <trigger-step
4a00: 3e 20 3b 20 5d 2a 0a 45 4e 44 0a 7d 0a 0a 53 79  > ; ]*.END.}..Sy
4a10: 6e 74 61 78 20 7b 74 72 69 67 67 65 72 2d 73 74  ntax {trigger-st
4a20: 65 70 7d 20 7b 0a 3c 75 70 64 61 74 65 2d 73 74  ep} {.<update-st
4a30: 61 74 65 6d 65 6e 74 3e 20 7c 20 3c 69 6e 73 65  atement> | <inse
4a40: 72 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20  rt-statement> | 
4a50: 0a 3c 64 65 6c 65 74 65 2d 73 74 61 74 65 6d 65  .<delete-stateme
4a60: 6e 74 3e 20 7c 20 3c 73 65 6c 65 63 74 2d 73 74  nt> | <select-st
4a70: 61 74 65 6d 65 6e 74 3e 20 0a 7d 0a 0a 70 75 74  atement> .}..put
4a80: 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54  s {.<p>The CREAT
4a90: 45 20 54 52 49 47 47 45 52 20 73 74 61 74 65 6d  E TRIGGER statem
4aa0: 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 61  ent is used to a
4ab0: 64 64 20 74 72 69 67 67 65 72 73 20 74 6f 20 74  dd triggers to t
4ac0: 68 65 20 0a 64 61 74 61 62 61 73 65 20 73 63 68  he .database sch
4ad0: 65 6d 61 2e 20 54 72 69 67 67 65 72 73 20 61 72  ema. Triggers ar
4ae0: 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 72 61  e database opera
4af0: 74 69 6f 6e 73 20 28 74 68 65 20 3c 69 3e 74 72  tions (the <i>tr
4b00: 69 67 67 65 72 2d 61 63 74 69 6f 6e 3c 2f 69 3e  igger-action</i>
4b10: 29 20 0a 74 68 61 74 20 61 72 65 20 61 75 74 6f  ) .that are auto
4b20: 6d 61 74 69 63 61 6c 6c 79 20 70 65 72 66 6f 72  matically perfor
4b30: 6d 65 64 20 77 68 65 6e 20 61 20 73 70 65 63 69  med when a speci
4b40: 66 69 65 64 20 64 61 74 61 62 61 73 65 20 65 76  fied database ev
4b50: 65 6e 74 20 28 74 68 65 0a 3c 69 3e 64 61 74 61  ent (the.<i>data
4b60: 62 61 73 65 2d 65 76 65 6e 74 3c 2f 69 3e 29 20  base-event</i>) 
4b70: 6f 63 63 75 72 73 2e 20 20 3c 2f 70 3e 0a 0a 3c  occurs.  </p>..<
4b80: 70 3e 41 20 74 72 69 67 67 65 72 20 6d 61 79 20  p>A trigger may 
4b90: 62 65 20 73 70 65 63 69 66 69 65 64 20 74 6f 20  be specified to 
4ba0: 66 69 72 65 20 77 68 65 6e 65 76 65 72 20 61 20  fire whenever a 
4bb0: 44 45 4c 45 54 45 2c 20 49 4e 53 45 52 54 20 6f  DELETE, INSERT o
4bc0: 72 20 55 50 44 41 54 45 20 6f 66 20 61 0a 70 61  r UPDATE of a.pa
4bd0: 72 74 69 63 75 6c 61 72 20 64 61 74 61 62 61 73  rticular databas
4be0: 65 20 74 61 62 6c 65 20 6f 63 63 75 72 73 2c 20  e table occurs, 
4bf0: 6f 72 20 77 68 65 6e 65 76 65 72 20 61 6e 20 55  or whenever an U
4c00: 50 44 41 54 45 20 6f 66 20 6f 6e 65 20 6f 72 20  PDATE of one or 
4c10: 6d 6f 72 65 0a 73 70 65 63 69 66 69 65 64 20 63  more.specified c
4c20: 6f 6c 75 6d 6e 73 20 6f 66 20 61 20 74 61 62 6c  olumns of a tabl
4c30: 65 20 61 72 65 20 75 70 64 61 74 65 64 2e 3c 2f  e are updated.</
4c40: 70 3e 0a 0a 3c 70 3e 41 74 20 74 68 69 73 20 74  p>..<p>At this t
4c50: 69 6d 65 20 53 51 4c 69 74 65 20 73 75 70 70 6f  ime SQLite suppo
4c60: 72 74 73 20 6f 6e 6c 79 20 46 4f 52 20 45 41 43  rts only FOR EAC
4c70: 48 20 52 4f 57 20 74 72 69 67 67 65 72 73 2c 20  H ROW triggers, 
4c80: 6e 6f 74 20 46 4f 52 20 45 41 43 48 0a 53 54 41  not FOR EACH.STA
4c90: 54 45 4d 45 4e 54 20 74 72 69 67 67 65 72 73 2e  TEMENT triggers.
4ca0: 20 48 65 6e 63 65 20 65 78 70 6c 69 63 69 74 6c   Hence explicitl
4cb0: 79 20 73 70 65 63 69 66 79 69 6e 67 20 46 4f 52  y specifying FOR
4cc0: 20 45 41 43 48 20 52 4f 57 20 69 73 20 6f 70 74   EACH ROW is opt
4cd0: 69 6f 6e 61 6c 2e 20 20 46 4f 52 0a 45 41 43 48  ional.  FOR.EACH
4ce0: 20 52 4f 57 20 69 6d 70 6c 69 65 73 20 74 68 61   ROW implies tha
4cf0: 74 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d  t the SQL statem
4d00: 65 6e 74 73 20 73 70 65 63 69 66 69 65 64 20 61  ents specified a
4d10: 73 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65  s <i>trigger-ste
4d20: 70 73 3c 2f 69 3e 20 0a 6d 61 79 20 62 65 20 65  ps</i> .may be e
4d30: 78 65 63 75 74 65 64 20 28 64 65 70 65 6e 64 69  xecuted (dependi
4d40: 6e 67 20 6f 6e 20 74 68 65 20 57 48 45 4e 20 63  ng on the WHEN c
4d50: 6c 61 75 73 65 29 20 66 6f 72 20 65 61 63 68 20  lause) for each 
4d60: 64 61 74 61 62 61 73 65 20 72 6f 77 20 62 65 69  database row bei
4d70: 6e 67 0a 69 6e 73 65 72 74 65 64 2c 20 75 70 64  ng.inserted, upd
4d80: 61 74 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20  ated or deleted 
4d90: 62 79 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74  by the statement
4da0: 20 63 61 75 73 69 6e 67 20 74 68 65 20 74 72 69   causing the tri
4db0: 67 67 65 72 20 74 6f 20 66 69 72 65 2e 3c 2f 70  gger to fire.</p
4dc0: 3e 0a 0a 3c 70 3e 42 6f 74 68 20 74 68 65 20 57  >..<p>Both the W
4dd0: 48 45 4e 20 63 6c 61 75 73 65 20 61 6e 64 20 74  HEN clause and t
4de0: 68 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74  he <i>trigger-st
4df0: 65 70 73 3c 2f 69 3e 20 6d 61 79 20 61 63 63 65  eps</i> may acce
4e00: 73 73 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 0a  ss elements of .
4e10: 74 68 65 20 72 6f 77 20 62 65 69 6e 67 20 69 6e  the row being in
4e20: 73 65 72 74 65 64 2c 20 64 65 6c 65 74 65 64 20  serted, deleted 
4e30: 6f 72 20 75 70 64 61 74 65 64 20 75 73 69 6e 67  or updated using
4e40: 20 72 65 66 65 72 65 6e 63 65 73 20 6f 66 20 74   references of t
4e50: 68 65 20 66 6f 72 6d 20 0a 22 4e 45 57 2e 3c 69  he form ."NEW.<i
4e60: 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e  >column-name</i>
4e70: 22 20 61 6e 64 20 22 4f 4c 44 2e 3c 69 3e 63 6f  " and "OLD.<i>co
4e80: 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 22 2c 20  lumn-name</i>", 
4e90: 77 68 65 72 65 0a 3c 69 3e 63 6f 6c 75 6d 6e 2d  where.<i>column-
4ea0: 6e 61 6d 65 3c 2f 69 3e 20 69 73 20 74 68 65 20  name</i> is the 
4eb0: 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6c 75 6d 6e  name of a column
4ec0: 20 66 72 6f 6d 20 74 68 65 20 74 61 62 6c 65 20   from the table 
4ed0: 74 68 61 74 20 74 68 65 20 74 72 69 67 67 65 72  that the trigger
4ee0: 0a 69 73 20 61 73 73 6f 63 69 61 74 65 64 20 77  .is associated w
4ef0: 69 74 68 2e 20 4f 4c 44 20 61 6e 64 20 4e 45 57  ith. OLD and NEW
4f00: 20 72 65 66 65 72 65 6e 63 65 73 20 6d 61 79 20   references may 
4f10: 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20  only be used in 
4f20: 74 72 69 67 67 65 72 73 20 6f 6e 0a 3c 69 3e 74  triggers on.<i>t
4f30: 72 69 67 67 65 72 2d 65 76 65 6e 74 3c 2f 69 3e  rigger-event</i>
4f40: 73 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 79  s for which they
4f50: 20 61 72 65 20 72 65 6c 65 76 61 6e 74 2c 20 61   are relevant, a
4f60: 73 20 66 6f 6c 6c 6f 77 73 3a 3c 2f 70 3e 0a 0a  s follows:</p>..
4f70: 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20  <table border=0 
4f80: 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a  cellpadding=10>.
4f90: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
4fa0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
4fb0: 68 74 22 20 77 69 64 74 68 3d 31 32 30 3e 3c 69  ht" width=120><i
4fc0: 3e 49 4e 53 45 52 54 3c 2f 69 3e 3c 2f 74 64 3e  >INSERT</i></td>
4fd0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
4fe0: 22 3e 4e 45 57 20 72 65 66 65 72 65 6e 63 65 73  ">NEW references
4ff0: 20 61 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a   are valid</td>.
5000: 3c 2f 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76  </tr>.<tr>.<td v
5010: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
5020: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
5030: 31 32 30 3e 3c 69 3e 55 50 44 41 54 45 3c 2f 69  120><i>UPDATE</i
5040: 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  ></td>.<td valig
5050: 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 61 6e 64 20  n="top">NEW and 
5060: 4f 4c 44 20 72 65 66 65 72 65 6e 63 65 73 20 61  OLD references a
5070: 72 65 20 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f  re valid</td>.</
5080: 74 72 3e 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c  tr>.<tr>.<td val
5090: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
50a0: 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 31 32  "right" width=12
50b0: 30 3e 3c 69 3e 44 45 4c 45 54 45 3c 2f 69 3e 3c  0><i>DELETE</i><
50c0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
50d0: 22 74 6f 70 22 3e 4f 4c 44 20 72 65 66 65 72 65  "top">OLD refere
50e0: 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c 2f  nces are valid</
50f0: 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c  td>.</tr>.</tabl
5100: 65 3e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 61  e>.</p>..<p>If a
5110: 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20   WHEN clause is 
5120: 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20 53 51  supplied, the SQ
5130: 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65  L statements spe
5140: 63 69 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69  cified as <i>tri
5150: 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 61  gger-steps</i> a
5160: 72 65 20 6f 6e 6c 79 20 65 78 65 63 75 74 65 64  re only executed
5170: 20 66 6f 72 20 72 6f 77 73 20 66 6f 72 20 77 68   for rows for wh
5180: 69 63 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61  ich the WHEN cla
5190: 75 73 65 20 69 73 20 74 72 75 65 2e 20 49 66 20  use is true. If 
51a0: 6e 6f 20 57 48 45 4e 20 63 6c 61 75 73 65 20 69  no WHEN clause i
51b0: 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65 20  s supplied, the 
51c0: 53 51 4c 20 73 74 61 74 65 6d 65 6e 74 73 20 61  SQL statements a
51d0: 72 65 20 65 78 65 63 75 74 65 64 20 66 6f 72 20  re executed for 
51e0: 61 6c 6c 20 72 6f 77 73 2e 3c 2f 70 3e 0a 0a 3c  all rows.</p>..<
51f0: 70 3e 54 68 65 20 73 70 65 63 69 66 69 65 64 20  p>The specified 
5200: 3c 69 3e 74 72 69 67 67 65 72 2d 74 69 6d 65 3c  <i>trigger-time<
5210: 2f 69 3e 20 64 65 74 65 72 6d 69 6e 65 73 20 77  /i> determines w
5220: 68 65 6e 20 74 68 65 20 3c 69 3e 74 72 69 67 67  hen the <i>trigg
5230: 65 72 2d 73 74 65 70 73 3c 2f 69 3e 0a 77 69 6c  er-steps</i>.wil
5240: 6c 20 62 65 20 65 78 65 63 75 74 65 64 20 72 65  l be executed re
5250: 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 69 6e  lative to the in
5260: 73 65 72 74 69 6f 6e 2c 20 6d 6f 64 69 66 69 63  sertion, modific
5270: 61 74 69 6f 6e 20 6f 72 20 72 65 6d 6f 76 61 6c  ation or removal
5280: 20 6f 66 20 74 68 65 0a 61 73 73 6f 63 69 61 74   of the.associat
5290: 65 64 20 72 6f 77 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ed row.</p>..<p>
52a0: 41 6e 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63  An ON CONFLICT c
52b0: 6c 61 75 73 65 20 6d 61 79 20 62 65 20 73 70 65  lause may be spe
52c0: 63 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f  cified as part o
52d0: 66 20 61 6e 20 55 50 44 41 54 45 20 6f 72 20 49  f an UPDATE or I
52e0: 4e 53 45 52 54 0a 3c 69 3e 74 72 69 67 67 65 72  NSERT.<i>trigger
52f0: 2d 73 74 65 70 3c 2f 69 3e 2e 20 48 6f 77 65 76  -step</i>. Howev
5300: 65 72 20 69 66 20 61 6e 20 4f 4e 20 43 4f 4e 46  er if an ON CONF
5310: 4c 49 43 54 20 63 6c 61 75 73 65 20 69 73 20 73  LICT clause is s
5320: 70 65 63 69 66 69 65 64 20 61 73 20 70 61 72 74  pecified as part
5330: 20 6f 66 20 0a 74 68 65 20 73 74 61 74 65 6d 65   of .the stateme
5340: 6e 74 20 63 61 75 73 69 6e 67 20 74 68 65 20 74  nt causing the t
5350: 72 69 67 67 65 72 20 74 6f 20 66 69 72 65 2c 20  rigger to fire, 
5360: 74 68 65 6e 20 74 68 69 73 20 63 6f 6e 66 6c 69  then this confli
5370: 63 74 20 68 61 6e 64 6c 69 6e 67 0a 70 6f 6c 69  ct handling.poli
5380: 63 79 20 69 73 20 75 73 65 64 20 69 6e 73 74 65  cy is used inste
5390: 61 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67  ad.</p>..<p>Trig
53a0: 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61 74  gers are automat
53b0: 69 63 61 6c 6c 79 20 64 72 6f 70 70 65 64 20 77  ically dropped w
53c0: 68 65 6e 20 74 68 65 20 74 61 62 6c 65 20 74 68  hen the table th
53d0: 61 74 20 74 68 65 79 20 61 72 65 20 0a 61 73 73  at they are .ass
53e0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 69 73 20  ociated with is 
53f0: 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70  dropped.</p>..<p
5400: 3e 54 72 69 67 67 65 72 73 20 6d 61 79 20 62 65  >Triggers may be
5410: 20 63 72 65 61 74 65 64 20 6f 6e 20 76 69 65 77   created on view
5420: 73 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 6f 72  s, as well as or
5430: 64 69 6e 61 72 79 20 74 61 62 6c 65 73 2c 20 62  dinary tables, b
5440: 79 20 73 70 65 63 69 66 79 69 6e 67 0a 49 4e 53  y specifying.INS
5450: 54 45 41 44 20 4f 46 20 69 6e 20 74 68 65 20 43  TEAD OF in the C
5460: 52 45 41 54 45 20 54 52 49 47 47 45 52 20 73 74  REATE TRIGGER st
5470: 61 74 65 6d 65 6e 74 2e 20 49 66 20 6f 6e 65 20  atement. If one 
5480: 6f 72 20 6d 6f 72 65 20 4f 4e 20 49 4e 53 45 52  or more ON INSER
5490: 54 2c 20 4f 4e 20 44 45 4c 45 54 45 0a 6f 72 20  T, ON DELETE.or 
54a0: 4f 4e 20 55 50 44 41 54 45 20 74 72 69 67 67 65  ON UPDATE trigge
54b0: 72 73 20 61 72 65 20 64 65 66 69 6e 65 64 20 6f  rs are defined o
54c0: 6e 20 61 20 76 69 65 77 2c 20 74 68 65 6e 20 69  n a view, then i
54d0: 74 20 69 73 20 6e 6f 74 20 61 6e 20 65 72 72 6f  t is not an erro
54e0: 72 20 74 6f 20 65 78 65 63 75 74 65 0a 61 6e 20  r to execute.an 
54f0: 49 4e 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f  INSERT, DELETE o
5500: 72 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65  r UPDATE stateme
5510: 6e 74 20 6f 6e 20 74 68 65 20 76 69 65 77 2c 20  nt on the view, 
5520: 72 65 73 70 65 63 74 69 76 65 6c 79 2e 20 54 68  respectively. Th
5530: 65 72 65 61 66 74 65 72 2c 0a 65 78 65 63 75 74  ereafter,.execut
5540: 69 6e 67 20 61 6e 20 49 4e 53 45 52 54 2c 20 44  ing an INSERT, D
5550: 45 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45 20  ELETE or UPDATE 
5560: 6f 6e 20 74 68 65 20 76 69 65 77 20 63 61 75 73  on the view caus
5570: 65 73 20 74 68 65 20 61 73 73 6f 63 69 61 74 65  es the associate
5580: 64 0a 20 20 74 72 69 67 67 65 72 73 20 74 6f 20  d.  triggers to 
5590: 66 69 72 65 2e 20 54 68 65 20 72 65 61 6c 20 74  fire. The real t
55a0: 61 62 6c 65 73 20 75 6e 64 65 72 6c 79 69 6e 67  ables underlying
55b0: 20 74 68 65 20 76 69 65 77 20 61 72 65 20 6e 6f   the view are no
55c0: 74 20 6d 6f 64 69 66 69 65 64 0a 20 20 28 65 78  t modified.  (ex
55d0: 63 65 70 74 20 70 6f 73 73 69 62 6c 79 20 65 78  cept possibly ex
55e0: 70 6c 69 63 69 74 6c 79 2c 20 62 79 20 61 20 74  plicitly, by a t
55f0: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 29 2e  rigger program).
5600: 3c 2f 70 3e 0a 0a 3c 70 3e 3c 62 3e 45 78 61 6d  </p>..<p><b>Exam
5610: 70 6c 65 3a 3c 2f 62 3e 3c 2f 70 3e 0a 0a 3c 70  ple:</b></p>..<p
5620: 3e 41 73 73 75 6d 69 6e 67 20 74 68 61 74 20 63  >Assuming that c
5630: 75 73 74 6f 6d 65 72 20 72 65 63 6f 72 64 73 20  ustomer records 
5640: 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68  are stored in th
5650: 65 20 22 63 75 73 74 6f 6d 65 72 73 22 20 74 61  e "customers" ta
5660: 62 6c 65 2c 20 61 6e 64 0a 74 68 61 74 20 6f 72  ble, and.that or
5670: 64 65 72 20 72 65 63 6f 72 64 73 20 61 72 65 20  der records are 
5680: 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 22 6f  stored in the "o
5690: 72 64 65 72 73 22 20 74 61 62 6c 65 2c 20 74 68  rders" table, th
56a0: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 72 69 67  e following trig
56b0: 67 65 72 0a 65 6e 73 75 72 65 73 20 74 68 61 74  ger.ensures that
56c0: 20 61 6c 6c 20 61 73 73 6f 63 69 61 74 65 64 20   all associated 
56d0: 6f 72 64 65 72 73 20 61 72 65 20 72 65 64 69 72  orders are redir
56e0: 65 63 74 65 64 20 77 68 65 6e 20 61 20 63 75 73  ected when a cus
56f0: 74 6f 6d 65 72 20 63 68 61 6e 67 65 73 0a 68 69  tomer changes.hi
5700: 73 20 6f 72 20 68 65 72 20 61 64 64 72 65 73 73  s or her address
5710: 3a 3c 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c 65 20  :</p>.}.Example 
5720: 7b 0a 43 52 45 41 54 45 20 54 52 49 47 47 45 52  {.CREATE TRIGGER
5730: 20 75 70 64 61 74 65 5f 63 75 73 74 6f 6d 65 72   update_customer
5740: 5f 61 64 64 72 65 73 73 20 55 50 44 41 54 45 20  _address UPDATE 
5750: 4f 46 20 61 64 64 72 65 73 73 20 4f 4e 20 63 75  OF address ON cu
5760: 73 74 6f 6d 65 72 73 20 0a 20 20 42 45 47 49 4e  stomers .  BEGIN
5770: 0a 20 20 20 20 55 50 44 41 54 45 20 6f 72 64 65  .    UPDATE orde
5780: 72 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d  rs SET address =
5790: 20 6e 65 77 2e 61 64 64 72 65 73 73 20 57 48 45   new.address WHE
57a0: 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65  RE customer_name
57b0: 20 3d 20 6f 6c 64 2e 6e 61 6d 65 3b 0a 20 20 45   = old.name;.  E
57c0: 4e 44 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e  ND;.}.puts {.<p>
57d0: 57 69 74 68 20 74 68 69 73 20 74 72 69 67 67 65  With this trigge
57e0: 72 20 69 6e 73 74 61 6c 6c 65 64 2c 20 65 78 65  r installed, exe
57f0: 63 75 74 69 6e 67 20 74 68 65 20 73 74 61 74 65  cuting the state
5800: 6d 65 6e 74 3a 3c 2f 70 3e 0a 7d 0a 0a 45 78 61  ment:</p>.}..Exa
5810: 6d 70 6c 65 20 7b 0a 55 50 44 41 54 45 20 63 75  mple {.UPDATE cu
5820: 73 74 6f 6d 65 72 73 20 53 45 54 20 61 64 64 72  stomers SET addr
5830: 65 73 73 20 3d 20 27 31 20 4d 61 69 6e 20 53 74  ess = '1 Main St
5840: 2e 27 20 57 48 45 52 45 20 6e 61 6d 65 20 3d 20  .' WHERE name = 
5850: 27 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a  'Jack Jones';.}.
5860: 70 75 74 73 20 7b 0a 3c 70 3e 63 61 75 73 65 73  puts {.<p>causes
5870: 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74   the following t
5880: 6f 20 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c  o be automatical
5890: 6c 79 20 65 78 65 63 75 74 65 64 3a 3c 2f 70 3e  ly executed:</p>
58a0: 0a 7d 0a 45 78 61 6d 70 6c 65 20 7b 0a 55 50 44  .}.Example {.UPD
58b0: 41 54 45 20 6f 72 64 65 72 73 20 53 45 54 20 61  ATE orders SET a
58c0: 64 64 72 65 73 73 20 3d 20 27 31 20 4d 61 69 6e  ddress = '1 Main
58d0: 20 53 74 2e 27 20 57 48 45 52 45 20 63 75 73 74   St.' WHERE cust
58e0: 6f 6d 65 72 5f 6e 61 6d 65 20 3d 20 27 4a 61 63  omer_name = 'Jac
58f0: 6b 20 4a 6f 6e 65 73 27 3b 0a 7d 0a 0a 70 75 74  k Jones';.}..put
5900: 73 20 7b 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74  s {.<p>Note that
5910: 20 63 75 72 72 65 6e 74 6c 79 2c 20 74 72 69 67   currently, trig
5920: 67 65 72 73 20 6d 61 79 20 62 65 68 61 76 65 20  gers may behave 
5930: 6f 64 64 6c 79 20 77 68 65 6e 20 63 72 65 61 74  oddly when creat
5940: 65 64 20 6f 6e 20 74 61 62 6c 65 73 0a 20 20 77  ed on tables.  w
5950: 69 74 68 20 49 4e 54 45 47 45 52 20 50 52 49 4d  ith INTEGER PRIM
5960: 41 52 59 20 4b 45 59 20 66 69 65 6c 64 73 2e 20  ARY KEY fields. 
5970: 49 66 20 61 20 42 45 46 4f 52 45 20 74 72 69 67  If a BEFORE trig
5980: 67 65 72 20 70 72 6f 67 72 61 6d 20 6d 6f 64 69  ger program modi
5990: 66 69 65 73 20 74 68 65 20 0a 20 20 49 4e 54 45  fies the .  INTE
59a0: 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20  GER PRIMARY KEY 
59b0: 66 69 65 6c 64 20 6f 66 20 61 20 72 6f 77 20 74  field of a row t
59c0: 68 61 74 20 77 69 6c 6c 20 62 65 20 73 75 62 73  hat will be subs
59d0: 65 71 75 65 6e 74 6c 79 20 75 70 64 61 74 65 64  equently updated
59e0: 20 62 79 20 74 68 65 0a 20 20 73 74 61 74 65 6d   by the.  statem
59f0: 65 6e 74 20 74 68 61 74 20 63 61 75 73 65 73 20  ent that causes 
5a00: 74 68 65 20 74 72 69 67 67 65 72 20 74 6f 20 66  the trigger to f
5a10: 69 72 65 2c 20 74 68 65 6e 20 74 68 65 20 75 70  ire, then the up
5a20: 64 61 74 65 20 6d 61 79 20 6e 6f 74 20 6f 63 63  date may not occ
5a30: 75 72 2e 20 0a 20 20 54 68 65 20 77 6f 72 6b 61  ur. .  The worka
5a40: 72 6f 75 6e 64 20 69 73 20 74 6f 20 64 65 63 6c  round is to decl
5a50: 61 72 65 20 74 68 65 20 74 61 62 6c 65 20 77 69  are the table wi
5a60: 74 68 20 61 20 50 52 49 4d 41 52 59 20 4b 45 59  th a PRIMARY KEY
5a70: 20 63 6f 6c 75 6d 6e 20 69 6e 73 74 65 61 64 0a   column instead.
5a80: 20 20 6f 66 20 61 6e 20 49 4e 54 45 47 45 52 20    of an INTEGER 
5a90: 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75  PRIMARY KEY colu
5aa0: 6d 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 70 75 74 73 20  mn.</p>.}..puts 
5ab0: 7b 0a 3c 70 3e 41 20 73 70 65 63 69 61 6c 20 53  {.<p>A special S
5ac0: 51 4c 20 66 75 6e 63 74 69 6f 6e 20 52 41 49 53  QL function RAIS
5ad0: 45 28 29 20 6d 61 79 20 62 65 20 75 73 65 64 20  E() may be used 
5ae0: 77 69 74 68 69 6e 20 61 20 74 72 69 67 67 65 72  within a trigger
5af0: 2d 70 72 6f 67 72 61 6d 2c 20 77 69 74 68 20 74  -program, with t
5b00: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 79 6e  he following syn
5b10: 74 61 78 3c 2f 70 3e 20 0a 7d 0a 53 79 6e 74 61  tax</p> .}.Synta
5b20: 78 20 7b 72 61 69 73 65 2d 66 75 6e 63 74 69 6f  x {raise-functio
5b30: 6e 7d 20 7b 0a 52 41 49 53 45 20 28 20 41 42 4f  n} {.RAISE ( ABO
5b40: 52 54 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73 61  RT, <error-messa
5b50: 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20 28  ge> ) | .RAISE (
5b60: 20 46 41 49 4c 2c 20 3c 65 72 72 6f 72 2d 6d 65   FAIL, <error-me
5b70: 73 73 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53  ssage> ) | .RAIS
5b80: 45 20 28 20 52 4f 4c 4c 42 41 43 4b 2c 20 3c 65  E ( ROLLBACK, <e
5b90: 72 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20  rror-message> ) 
5ba0: 7c 20 0a 52 41 49 53 45 20 28 20 49 47 4e 4f 52  | .RAISE ( IGNOR
5bb0: 45 20 29 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70 3e  E ).}.puts {.<p>
5bc0: 57 68 65 6e 20 6f 6e 65 20 6f 66 20 74 68 65 20  When one of the 
5bd0: 66 69 72 73 74 20 74 68 72 65 65 20 66 6f 72 6d  first three form
5be0: 73 20 69 73 20 63 61 6c 6c 65 64 20 64 75 72 69  s is called duri
5bf0: 6e 67 20 74 72 69 67 67 65 72 2d 70 72 6f 67 72  ng trigger-progr
5c00: 61 6d 20 65 78 65 63 75 74 69 6f 6e 2c 20 74 68  am execution, th
5c10: 65 20 73 70 65 63 69 66 69 65 64 20 4f 4e 20 43  e specified ON C
5c20: 4f 4e 46 4c 49 43 54 20 70 72 6f 63 65 73 73 69  ONFLICT processi
5c30: 6e 67 20 69 73 20 70 65 72 66 6f 72 6d 65 64 20  ng is performed 
5c40: 28 65 69 74 68 65 72 20 41 42 4f 52 54 2c 20 46  (either ABORT, F
5c50: 41 49 4c 20 6f 72 20 0a 20 52 4f 4c 4c 42 41 43  AIL or . ROLLBAC
5c60: 4b 29 20 61 6e 64 20 74 68 65 20 63 75 72 72 65  K) and the curre
5c70: 6e 74 20 71 75 65 72 79 20 74 65 72 6d 69 6e 61  nt query termina
5c80: 74 65 73 2e 20 41 6e 20 65 72 72 6f 72 20 63 6f  tes. An error co
5c90: 64 65 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e  de of SQLITE_CON
5ca0: 53 54 52 41 49 4e 54 20 69 73 20 72 65 74 75 72  STRAINT is retur
5cb0: 6e 65 64 20 74 6f 20 74 68 65 20 75 73 65 72 2c  ned to the user,
5cc0: 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20   along with the 
5cd0: 73 70 65 63 69 66 69 65 64 20 65 72 72 6f 72 20  specified error 
5ce0: 6d 65 73 73 61 67 65 2e 3c 2f 70 3e 0a 0a 3c 70  message.</p>..<p
5cf0: 3e 57 68 65 6e 20 52 41 49 53 45 28 49 47 4e 4f  >When RAISE(IGNO
5d00: 52 45 29 20 69 73 20 63 61 6c 6c 65 64 2c 20 74  RE) is called, t
5d10: 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66 20  he remainder of 
5d20: 74 68 65 20 63 75 72 72 65 6e 74 20 74 72 69 67  the current trig
5d30: 67 65 72 20 70 72 6f 67 72 61 6d 2c 0a 74 68 65  ger program,.the
5d40: 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20   statement that 
5d50: 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67 67  caused the trigg
5d60: 65 72 20 70 72 6f 67 72 61 6d 20 74 6f 20 65 78  er program to ex
5d70: 65 63 75 74 65 20 61 6e 64 20 61 6e 79 20 73 75  ecute and any su
5d80: 62 73 65 71 75 65 6e 74 0a 20 20 20 20 74 72 69  bsequent.    tri
5d90: 67 67 65 72 20 70 72 6f 67 72 61 6d 73 20 74 68  gger programs th
5da0: 61 74 20 77 6f 75 6c 64 20 6f 66 20 62 65 65 6e  at would of been
5db0: 20 65 78 65 63 75 74 65 64 20 61 72 65 20 61 62   executed are ab
5dc0: 61 6e 64 6f 6e 65 64 2e 20 4e 6f 20 64 61 74 61  andoned. No data
5dd0: 62 61 73 65 0a 20 20 20 20 63 68 61 6e 67 65 73  base.    changes
5de0: 20 61 72 65 20 72 6f 6c 6c 65 64 20 62 61 63 6b   are rolled back
5df0: 2e 20 20 49 66 20 74 68 65 20 73 74 61 74 65 6d  .  If the statem
5e00: 65 6e 74 20 74 68 61 74 20 63 61 75 73 65 64 20  ent that caused 
5e10: 74 68 65 20 74 72 69 67 67 65 72 20 70 72 6f 67  the trigger prog
5e20: 72 61 6d 0a 20 20 20 20 74 6f 20 65 78 65 63 75  ram.    to execu
5e30: 74 65 20 69 73 20 69 74 73 65 6c 66 20 70 61 72  te is itself par
5e40: 74 20 6f 66 20 61 20 74 72 69 67 67 65 72 20 70  t of a trigger p
5e50: 72 6f 67 72 61 6d 2c 20 74 68 65 6e 20 74 68 61  rogram, then tha
5e60: 74 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  t trigger progra
5e70: 6d 0a 20 20 20 20 72 65 73 75 6d 65 73 20 65 78  m.    resumes ex
5e80: 65 63 75 74 69 6f 6e 20 61 74 20 74 68 65 20 62  ecution at the b
5e90: 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 20  eginning of the 
5ea0: 6e 65 78 74 20 73 74 65 70 2e 0a 3c 2f 70 3e 0a  next step..</p>.
5eb0: 0a 3c 70 3e 54 72 69 67 67 65 72 73 20 61 72 65  .<p>Triggers are
5ec0: 20 72 65 6d 6f 76 65 64 20 75 73 69 6e 67 20 74   removed using t
5ed0: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 64 72 6f  he <a href="#dro
5ee0: 70 74 72 69 67 67 65 72 22 3e 44 52 4f 50 20 54  ptrigger">DROP T
5ef0: 52 49 47 47 45 52 3c 2f 61 3e 0a 73 74 61 74 65  RIGGER</a>.state
5f00: 6d 65 6e 74 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f  ment.  Non-tempo
5f10: 72 61 72 79 20 74 72 69 67 67 65 72 73 20 63 61  rary triggers ca
5f20: 6e 6e 6f 74 20 62 65 20 61 64 64 65 64 20 6f 6e  nnot be added on
5f30: 20 61 20 74 61 62 6c 65 20 69 6e 20 61 6e 20 0a   a table in an .
5f40: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
5f50: 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  e.</p>.}...Secti
5f60: 6f 6e 20 7b 43 52 45 41 54 45 20 56 49 45 57 7d  on {CREATE VIEW}
5f70: 20 7b 63 72 65 61 74 65 76 69 65 77 7d 0a 0a 53   {createview}..S
5f80: 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61  yntax {sql-comma
5f90: 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45  nd} {.CREATE [TE
5fa0: 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20  MP | TEMPORARY] 
5fb0: 56 49 45 57 20 5b 3c 64 61 74 61 62 61 73 65 2d  VIEW [<database-
5fc0: 6e 61 6d 65 3e 2e 5d 20 3c 76 69 65 77 2d 6e 61  name>.] <view-na
5fd0: 6d 65 3e 20 41 53 20 3c 73 65 6c 65 63 74 2d 73  me> AS <select-s
5fe0: 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74  tatement>.}..put
5ff0: 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45 41 54  s {.<p>The CREAT
6000: 45 20 56 49 45 57 20 63 6f 6d 6d 61 6e 64 20 61  E VIEW command a
6010: 73 73 69 67 6e 73 20 61 20 6e 61 6d 65 20 74 6f  ssigns a name to
6020: 20 61 20 70 72 65 2d 70 61 63 6b 61 67 65 64 20   a pre-packaged 
6030: 0a 3c 61 20 68 72 65 66 3d 22 23 73 65 6c 65 63  .<a href="#selec
6040: 74 22 3e 53 45 4c 45 43 54 3c 2f 61 3e 0a 73 74  t">SELECT</a>.st
6050: 61 74 65 6d 65 6e 74 2e 20 20 4f 6e 63 65 20 74  atement.  Once t
6060: 68 65 20 76 69 65 77 20 69 73 20 63 72 65 61 74  he view is creat
6070: 65 64 2c 20 69 74 20 63 61 6e 20 62 65 20 75 73  ed, it can be us
6080: 65 64 20 69 6e 20 74 68 65 20 46 52 4f 4d 20 63  ed in the FROM c
6090: 6c 61 75 73 65 0a 6f 66 20 61 6e 6f 74 68 65 72  lause.of another
60a0: 20 53 45 4c 45 43 54 20 69 6e 20 70 6c 61 63 65   SELECT in place
60b0: 20 6f 66 20 61 20 74 61 62 6c 65 20 6e 61 6d 65   of a table name
60c0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68  ..</p>..<p>If th
60d0: 65 20 22 54 45 4d 50 22 20 6f 72 20 22 54 45 4d  e "TEMP" or "TEM
60e0: 50 4f 52 41 52 59 22 20 6b 65 79 77 6f 72 64 20  PORARY" keyword 
60f0: 6f 63 63 75 72 73 20 69 6e 20 62 65 74 77 65 65  occurs in betwee
6100: 6e 20 22 43 52 45 41 54 45 22 0a 61 6e 64 20 22  n "CREATE".and "
6110: 54 41 42 4c 45 22 20 74 68 65 6e 20 74 68 65 20  TABLE" then the 
6120: 74 61 62 6c 65 20 74 68 61 74 20 69 73 20 63 72  table that is cr
6130: 65 61 74 65 64 20 69 73 20 6f 6e 6c 79 20 76 69  eated is only vi
6140: 73 69 62 6c 65 20 74 6f 20 74 68 65 0a 70 72 6f  sible to the.pro
6150: 63 65 73 73 20 74 68 61 74 20 6f 70 65 6e 65 64  cess that opened
6160: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 61 6e   the database an
6170: 64 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c  d is automatical
6180: 6c 79 20 64 65 6c 65 74 65 64 20 77 68 65 6e 0a  ly deleted when.
6190: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
61a0: 63 6c 6f 73 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  closed.</p>..<p>
61b0: 20 49 66 20 61 20 3c 64 61 74 61 62 61 73 65 2d   If a <database-
61c0: 6e 61 6d 65 3e 20 69 73 20 73 70 65 63 69 66 69  name> is specifi
61d0: 65 64 2c 20 74 68 65 6e 20 74 68 65 20 76 69 65  ed, then the vie
61e0: 77 20 69 73 20 63 72 65 61 74 65 64 20 69 6e 20  w is created in 
61f0: 0a 74 68 65 20 6e 61 6d 65 64 20 64 61 74 61 62  .the named datab
6200: 61 73 65 2e 20 49 74 20 69 73 20 61 6e 20 65 72  ase. It is an er
6210: 72 6f 72 20 74 6f 20 73 70 65 63 69 66 79 20 62  ror to specify b
6220: 6f 74 68 20 61 20 3c 64 61 74 61 62 61 73 65 2d  oth a <database-
6230: 6e 61 6d 65 3e 0a 61 6e 64 20 74 68 65 20 54 45  name>.and the TE
6240: 4d 50 20 6b 65 79 77 6f 72 64 2c 20 75 6e 6c 65  MP keyword, unle
6250: 73 73 20 74 68 65 20 3c 64 61 74 61 62 61 73 65  ss the <database
6260: 2d 6e 61 6d 65 3e 20 69 73 20 22 74 65 6d 70 22  -name> is "temp"
6270: 2e 20 49 66 20 6e 6f 0a 64 61 74 61 62 61 73 65  . If no.database
6280: 20 6e 61 6d 65 20 69 73 20 73 70 65 63 69 66 69   name is specifi
6290: 65 64 2c 20 61 6e 64 20 74 68 65 20 54 45 4d 50  ed, and the TEMP
62a0: 20 6b 65 79 77 6f 72 64 20 69 73 20 6e 6f 74 20   keyword is not 
62b0: 70 72 65 73 65 6e 74 2c 0a 74 68 65 20 74 61 62  present,.the tab
62c0: 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 69 6e  le is created in
62d0: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
62e0: 73 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 59 6f 75 20  se.</p>..<p>You 
62f0: 63 61 6e 6e 6f 74 20 43 4f 50 59 2c 20 44 45 4c  cannot COPY, DEL
6300: 45 54 45 2c 20 49 4e 53 45 52 54 20 6f 72 20 55  ETE, INSERT or U
6310: 50 44 41 54 45 20 61 20 76 69 65 77 2e 20 20 56  PDATE a view.  V
6320: 69 65 77 73 20 61 72 65 20 72 65 61 64 2d 6f 6e  iews are read-on
6330: 6c 79 20 0a 69 6e 20 53 51 4c 69 74 65 2e 20 20  ly .in SQLite.  
6340: 48 6f 77 65 76 65 72 2c 20 69 6e 20 6d 61 6e 79  However, in many
6350: 20 63 61 73 65 73 20 79 6f 75 20 63 61 6e 20 75   cases you can u
6360: 73 65 20 61 20 3c 61 20 68 72 65 66 3d 22 23 74  se a <a href="#t
6370: 72 69 67 67 65 72 22 3e 0a 54 52 49 47 47 45 52  rigger">.TRIGGER
6380: 3c 2f 61 3e 20 6f 6e 20 74 68 65 20 76 69 65 77  </a> on the view
6390: 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73 68 20 74   to accomplish t
63a0: 68 65 20 73 61 6d 65 20 74 68 69 6e 67 2e 20 20  he same thing.  
63b0: 56 69 65 77 73 20 61 72 65 20 72 65 6d 6f 76 65  Views are remove
63c0: 64 20 0a 77 69 74 68 20 74 68 65 20 3c 61 20 68  d .with the <a h
63d0: 72 65 66 3d 22 23 64 72 6f 70 76 69 65 77 22 3e  ref="#dropview">
63e0: 44 52 4f 50 20 56 49 45 57 3c 2f 61 3e 20 0a 63  DROP VIEW</a> .c
63f0: 6f 6d 6d 61 6e 64 2e 20 20 4e 6f 6e 2d 74 65 6d  ommand.  Non-tem
6400: 70 6f 72 61 72 79 20 76 69 65 77 73 20 63 61 6e  porary views can
6410: 6e 6f 74 20 62 65 20 63 72 65 61 74 65 64 20 6f  not be created o
6420: 6e 20 74 61 62 6c 65 73 20 69 6e 20 61 6e 20 61  n tables in an a
6430: 74 74 61 63 68 65 64 20 0a 64 61 74 61 62 61 73  ttached .databas
6440: 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69  e.</p>.}...Secti
6450: 6f 6e 20 44 45 4c 45 54 45 20 64 65 6c 65 74 65  on DELETE delete
6460: 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74  ..Syntax {sql-st
6470: 61 74 65 6d 65 6e 74 7d 20 7b 0a 44 45 4c 45 54  atement} {.DELET
6480: 45 20 46 52 4f 4d 20 5b 3c 64 61 74 61 62 61 73  E FROM [<databas
6490: 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c  e-name> .] <tabl
64a0: 65 2d 6e 61 6d 65 3e 20 5b 57 48 45 52 45 20 3c  e-name> [WHERE <
64b0: 65 78 70 72 3e 5d 0a 7d 0a 0a 70 75 74 73 20 7b  expr>].}..puts {
64c0: 0a 3c 70 3e 54 68 65 20 44 45 4c 45 54 45 20 63  .<p>The DELETE c
64d0: 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74  ommand is used t
64e0: 6f 20 72 65 6d 6f 76 65 20 72 65 63 6f 72 64 73  o remove records
64f0: 20 66 72 6f 6d 20 61 20 74 61 62 6c 65 2e 0a 54   from a table..T
6500: 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 73 69  he command consi
6510: 73 74 73 20 6f 66 20 74 68 65 20 22 44 45 4c 45  sts of the "DELE
6520: 54 45 20 46 52 4f 4d 22 20 6b 65 79 77 6f 72 64  TE FROM" keyword
6530: 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79 0a 74 68  s followed by.th
6540: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 74 61  e name of the ta
6550: 62 6c 65 20 66 72 6f 6d 20 77 68 69 63 68 20 72  ble from which r
6560: 65 63 6f 72 64 73 20 61 72 65 20 74 6f 20 62 65  ecords are to be
6570: 20 72 65 6d 6f 76 65 64 2e 0a 3c 2f 70 3e 0a 0a   removed..</p>..
6580: 3c 70 3e 57 69 74 68 6f 75 74 20 61 20 57 48 45  <p>Without a WHE
6590: 52 45 20 63 6c 61 75 73 65 2c 20 61 6c 6c 20 72  RE clause, all r
65a0: 6f 77 73 20 6f 66 20 74 68 65 20 74 61 62 6c 65  ows of the table
65b0: 20 61 72 65 20 72 65 6d 6f 76 65 64 2e 0a 49 66   are removed..If
65c0: 20 61 20 57 48 45 52 45 20 63 6c 61 75 73 65 20   a WHERE clause 
65d0: 69 73 20 73 75 70 70 6c 69 65 64 2c 20 74 68 65  is supplied, the
65e0: 6e 20 6f 6e 6c 79 20 74 68 6f 73 65 20 72 6f 77  n only those row
65f0: 73 20 74 68 61 74 20 6d 61 74 63 68 0a 74 68 65  s that match.the
6600: 20 65 78 70 72 65 73 73 69 6f 6e 20 61 72 65 20   expression are 
6610: 72 65 6d 6f 76 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a  removed.</p>.}..
6620: 0a 53 65 63 74 69 6f 6e 20 7b 44 45 54 41 43 48  .Section {DETACH
6630: 20 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63   DATABASE} detac
6640: 68 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63  h..Syntax {sql-c
6650: 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 45 54 41 43 48  ommand} {.DETACH
6660: 20 5b 44 41 54 41 42 41 53 45 5d 20 3c 64 61 74   [DATABASE] <dat
6670: 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70  abase-name>.}..p
6680: 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73 20 73 74  uts {.<p>This st
6690: 61 74 65 6d 65 6e 74 20 64 65 74 61 63 68 65 73  atement detaches
66a0: 20 61 6e 20 61 64 64 69 74 69 6f 6e 61 6c 20 64   an additional d
66b0: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
66c0: 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79 20 0a 61  on previously .a
66d0: 74 74 61 63 68 65 64 20 75 73 69 6e 67 20 74 68  ttached using th
66e0: 65 20 3c 61 20 68 72 65 66 3d 22 23 61 74 74 61  e <a href="#atta
66f0: 63 68 22 3e 41 54 54 41 43 48 20 44 41 54 41 42  ch">ATTACH DATAB
6700: 41 53 45 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e  ASE</a> statemen
6710: 74 2e 20 20 49 74 0a 69 73 20 70 6f 73 73 69 62  t.  It.is possib
6720: 6c 65 20 74 6f 20 68 61 76 65 20 74 68 65 20 73  le to have the s
6730: 61 6d 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ame database fil
6740: 65 20 61 74 74 61 63 68 65 64 20 6d 75 6c 74 69  e attached multi
6750: 70 6c 65 20 74 69 6d 65 73 20 75 73 69 6e 67 20  ple times using 
6760: 0a 64 69 66 66 65 72 65 6e 74 20 6e 61 6d 65 73  .different names
6770: 2c 20 61 6e 64 20 64 65 74 61 63 68 69 6e 67 20  , and detaching 
6780: 6f 6e 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74  one connection t
6790: 6f 20 61 20 66 69 6c 65 20 77 69 6c 6c 20 6c 65  o a file will le
67a0: 61 76 65 20 74 68 65 20 0a 6f 74 68 65 72 73 20  ave the .others 
67b0: 69 6e 74 61 63 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  intact.</p>..<p>
67c0: 54 68 69 73 20 73 74 61 74 65 6d 65 6e 74 20 77  This statement w
67d0: 69 6c 6c 20 66 61 69 6c 20 69 66 20 53 51 4c 69  ill fail if SQLi
67e0: 74 65 20 69 73 20 69 6e 20 74 68 65 20 6d 69 64  te is in the mid
67f0: 64 6c 65 20 6f 66 20 61 20 74 72 61 6e 73 61 63  dle of a transac
6800: 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  tion.</p>.}...Se
6810: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49 4e 44 45  ction {DROP INDE
6820: 58 7d 20 64 72 6f 70 69 6e 64 65 78 0a 0a 53 79  X} dropindex..Sy
6830: 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e  ntax {sql-comman
6840: 64 7d 20 7b 0a 44 52 4f 50 20 49 4e 44 45 58 20  d} {.DROP INDEX 
6850: 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e  [<database-name>
6860: 20 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61 6d 65 3e   .] <index-name>
6870: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
6880: 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73 74 61  e DROP INDEX sta
6890: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
68a0: 6e 20 69 6e 64 65 78 20 61 64 64 65 64 20 77 69  n index added wi
68b0: 74 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22  th the <a href="
68c0: 23 63 72 65 61 74 65 69 6e 64 65 78 22 3e 0a 43  #createindex">.C
68d0: 52 45 41 54 45 20 49 4e 44 45 58 3c 2f 61 3e 20  REATE INDEX</a> 
68e0: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20  statement.  The 
68f0: 69 6e 64 65 78 20 6e 61 6d 65 64 20 69 73 20 63  index named is c
6900: 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d 6f 76 65  ompletely remove
6910: 64 20 66 72 6f 6d 0a 74 68 65 20 64 69 73 6b 2e  d from.the disk.
6920: 20 20 54 68 65 20 6f 6e 6c 79 20 77 61 79 20 74    The only way t
6930: 6f 20 72 65 63 6f 76 65 72 20 74 68 65 20 69 6e  o recover the in
6940: 64 65 78 20 69 73 20 74 6f 20 72 65 65 6e 74 65  dex is to reente
6950: 72 20 74 68 65 0a 61 70 70 72 6f 70 72 69 61 74  r the.appropriat
6960: 65 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 63  e CREATE INDEX c
6970: 6f 6d 6d 61 6e 64 2e 20 20 4e 6f 6e 2d 74 65 6d  ommand.  Non-tem
6980: 70 6f 72 61 72 79 20 69 6e 64 65 78 65 73 20 6f  porary indexes o
6990: 6e 20 74 61 62 6c 65 73 20 69 6e 20 0a 61 6e 20  n tables in .an 
69a0: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
69b0: 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 72 6f 70  e cannot be drop
69c0: 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ped.</p>..<p>The
69d0: 20 44 52 4f 50 20 49 4e 44 45 58 20 73 74 61 74   DROP INDEX stat
69e0: 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 72  ement does not r
69f0: 65 64 75 63 65 20 74 68 65 20 73 69 7a 65 20 6f  educe the size o
6a00: 66 20 74 68 65 20 64 61 74 61 62 61 73 65 20 0a  f the database .
6a10: 66 69 6c 65 2e 20 20 45 6d 70 74 79 20 73 70 61  file.  Empty spa
6a20: 63 65 20 69 6e 20 74 68 65 20 64 61 74 61 62 61  ce in the databa
6a30: 73 65 20 69 73 20 72 65 74 61 69 6e 65 64 20 66  se is retained f
6a40: 6f 72 20 6c 61 74 65 72 20 49 4e 53 45 52 54 73  or later INSERTs
6a50: 2e 20 20 54 6f 20 0a 72 65 6d 6f 76 65 20 66 72  .  To .remove fr
6a60: 65 65 20 73 70 61 63 65 20 69 6e 20 74 68 65 20  ee space in the 
6a70: 64 61 74 61 62 61 73 65 2c 20 75 73 65 20 74 68  database, use th
6a80: 65 20 3c 61 20 68 72 65 66 3d 22 23 76 61 63 75  e <a href="#vacu
6a90: 75 6d 22 3e 56 41 43 55 55 4d 3c 2f 61 3e 20 0a  um">VACUUM</a> .
6aa0: 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d 0a 0a  command.</p>.}..
6ab0: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 54  .Section {DROP T
6ac0: 41 42 4c 45 7d 20 64 72 6f 70 74 61 62 6c 65 0a  ABLE} droptable.
6ad0: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d  .Syntax {sql-com
6ae0: 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 54 41 42  mand} {.DROP TAB
6af0: 4c 45 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  LE [<database-na
6b00: 6d 65 3e 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d  me>.] <table-nam
6b10: 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  e>.}..puts {.<p>
6b20: 54 68 65 20 44 52 4f 50 20 54 41 42 4c 45 20 73  The DROP TABLE s
6b30: 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73  tatement removes
6b40: 20 61 20 74 61 62 6c 65 20 61 64 64 65 64 20 77   a table added w
6b50: 69 74 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d  ith the <a href=
6b60: 0a 22 23 63 72 65 61 74 65 74 61 62 6c 65 22 3e  ."#createtable">
6b70: 43 52 45 41 54 45 20 54 41 42 4c 45 3c 2f 61 3e  CREATE TABLE</a>
6b80: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65   statement.  The
6b90: 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64 20   name specified 
6ba0: 69 73 20 74 68 65 0a 74 61 62 6c 65 20 6e 61 6d  is the.table nam
6bb0: 65 2e 20 20 49 74 20 69 73 20 63 6f 6d 70 6c 65  e.  It is comple
6bc0: 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f  tely removed fro
6bd0: 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73  m the database s
6be0: 63 68 65 6d 61 20 61 6e 64 20 74 68 65 20 0a 64  chema and the .d
6bf0: 69 73 6b 20 66 69 6c 65 2e 20 20 54 68 65 20 74  isk file.  The t
6c00: 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62 65 20  able can not be 
6c10: 72 65 63 6f 76 65 72 65 64 2e 20 20 41 6c 6c 20  recovered.  All 
6c20: 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61 74  indices associat
6c30: 65 64 20 0a 77 69 74 68 20 74 68 65 20 74 61 62  ed .with the tab
6c40: 6c 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65  le are also dele
6c50: 74 65 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72  ted.  Non-tempor
6c60: 61 72 79 20 74 61 62 6c 65 73 20 69 6e 20 61 6e  ary tables in an
6c70: 20 61 74 74 61 63 68 65 64 20 0a 64 61 74 61 62   attached .datab
6c80: 61 73 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 72  ase cannot be dr
6c90: 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  opped.</p>..<p>T
6ca0: 68 65 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74  he DROP TABLE st
6cb0: 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74  atement does not
6cc0: 20 72 65 64 75 63 65 20 74 68 65 20 73 69 7a 65   reduce the size
6cd0: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
6ce0: 20 0a 66 69 6c 65 2e 20 20 45 6d 70 74 79 20 73   .file.  Empty s
6cf0: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
6d00: 62 61 73 65 20 69 73 20 72 65 74 61 69 6e 65 64  base is retained
6d10: 20 66 6f 72 20 6c 61 74 65 72 20 49 4e 53 45 52   for later INSER
6d20: 54 73 2e 20 20 54 6f 20 0a 72 65 6d 6f 76 65 20  Ts.  To .remove 
6d30: 66 72 65 65 20 73 70 61 63 65 20 69 6e 20 74 68  free space in th
6d40: 65 20 64 61 74 61 62 61 73 65 2c 20 75 73 65 20  e database, use 
6d50: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 76 61  the <a href="#va
6d60: 63 75 75 6d 22 3e 56 41 43 55 55 4d 3c 2f 61 3e  cuum">VACUUM</a>
6d70: 20 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d   .command.</p>.}
6d80: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50  ...Section {DROP
6d90: 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74 72   TRIGGER} droptr
6da0: 69 67 67 65 72 0a 53 79 6e 74 61 78 20 7b 73 71  igger.Syntax {sq
6db0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44  l-statement} {.D
6dc0: 52 4f 50 20 54 52 49 47 47 45 52 20 5b 3c 64 61  ROP TRIGGER [<da
6dd0: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
6de0: 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e 0a 7d  <trigger-name>.}
6df0: 0a 70 75 74 73 20 7b 20 0a 3c 70 3e 54 68 65 20  .puts { .<p>The 
6e00: 44 52 4f 50 20 54 52 49 47 47 45 52 20 73 74 61  DROP TRIGGER sta
6e10: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
6e20: 20 74 72 69 67 67 65 72 20 63 72 65 61 74 65 64   trigger created
6e30: 20 62 79 20 74 68 65 20 0a 3c 61 20 68 72 65 66   by the .<a href
6e40: 3d 22 23 63 72 65 61 74 65 74 72 69 67 67 65 72  ="#createtrigger
6e50: 22 3e 43 52 45 41 54 45 20 54 52 49 47 47 45 52  ">CREATE TRIGGER
6e60: 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20  </a> statement. 
6e70: 20 54 68 65 20 74 72 69 67 67 65 72 20 69 73 20   The trigger is 
6e80: 0a 64 65 6c 65 74 65 64 20 66 72 6f 6d 20 74 68  .deleted from th
6e90: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
6ea0: 61 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 72 69  a. Note that tri
6eb0: 67 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61  ggers are automa
6ec0: 74 69 63 61 6c 6c 79 20 0a 64 72 6f 70 70 65 64  tically .dropped
6ed0: 20 77 68 65 6e 20 74 68 65 20 61 73 73 6f 63 69   when the associ
6ee0: 61 74 65 64 20 74 61 62 6c 65 20 69 73 20 64 72  ated table is dr
6ef0: 6f 70 70 65 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70  opped.  Non-temp
6f00: 6f 72 61 72 79 20 74 72 69 67 67 65 72 73 20 0a  orary triggers .
6f10: 63 61 6e 6e 6f 74 20 62 65 20 64 72 6f 70 70 65  cannot be droppe
6f20: 64 20 6f 6e 20 61 74 74 61 63 68 65 64 20 74 61  d on attached ta
6f30: 62 6c 65 73 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  bles.</p>.}...Se
6f40: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 56 49 45 57  ction {DROP VIEW
6f50: 7d 20 64 72 6f 70 76 69 65 77 0a 0a 53 79 6e 74  } dropview..Synt
6f60: 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d  ax {sql-command}
6f70: 20 7b 0a 44 52 4f 50 20 56 49 45 57 20 3c 76 69   {.DROP VIEW <vi
6f80: 65 77 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73  ew-name>.}..puts
6f90: 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 56   {.<p>The DROP V
6fa0: 49 45 57 20 73 74 61 74 65 6d 65 6e 74 20 72 65  IEW statement re
6fb0: 6d 6f 76 65 73 20 61 20 76 69 65 77 20 63 72 65  moves a view cre
6fc0: 61 74 65 64 20 62 79 20 74 68 65 20 3c 61 20 68  ated by the <a h
6fd0: 72 65 66 3d 0a 22 23 63 72 65 61 74 65 76 69 65  ref=."#createvie
6fe0: 77 22 3e 43 52 45 41 54 45 20 56 49 45 57 3c 2f  w">CREATE VIEW</
6ff0: 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  a> statement.  T
7000: 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65  he name specifie
7010: 64 20 69 73 20 74 68 65 20 0a 76 69 65 77 20 6e  d is the .view n
7020: 61 6d 65 2e 20 20 49 74 20 69 73 20 72 65 6d 6f  ame.  It is remo
7030: 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74  ved from the dat
7040: 61 62 61 73 65 20 73 63 68 65 6d 61 2c 20 62 75  abase schema, bu
7050: 74 20 6e 6f 20 61 63 74 75 61 6c 20 64 61 74 61  t no actual data
7060: 20 0a 69 6e 20 74 68 65 20 75 6e 64 65 72 6c 79   .in the underly
7070: 69 6e 67 20 62 61 73 65 20 74 61 62 6c 65 73 20  ing base tables 
7080: 69 73 20 6d 6f 64 69 66 69 65 64 2e 20 20 4e 6f  is modified.  No
7090: 6e 2d 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77  n-temporary view
70a0: 73 20 69 6e 20 0a 61 74 74 61 63 68 65 64 20 64  s in .attached d
70b0: 61 74 61 62 61 73 65 73 20 63 61 6e 6e 6f 74 20  atabases cannot 
70c0: 62 65 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a  be dropped.</p>.
70d0: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c  }...Section EXPL
70e0: 41 49 4e 20 65 78 70 6c 61 69 6e 0a 0a 53 79 6e  AIN explain..Syn
70f0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
7100: 6e 74 7d 20 7b 0a 45 58 50 4c 41 49 4e 20 3c 73  nt} {.EXPLAIN <s
7110: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a  ql-statement>.}.
7120: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 45  .puts {.<p>The E
7130: 58 50 4c 41 49 4e 20 63 6f 6d 6d 61 6e 64 20 6d  XPLAIN command m
7140: 6f 64 69 66 69 65 72 20 69 73 20 61 20 6e 6f 6e  odifier is a non
7150: 2d 73 74 61 6e 64 61 72 64 20 65 78 74 65 6e 73  -standard extens
7160: 69 6f 6e 2e 20 20 54 68 65 0a 69 64 65 61 20 63  ion.  The.idea c
7170: 6f 6d 65 73 20 66 72 6f 6d 20 61 20 73 69 6d 69  omes from a simi
7180: 6c 61 72 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e  lar command foun
7190: 64 20 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2c  d in PostgreSQL,
71a0: 20 62 75 74 20 74 68 65 20 6f 70 65 72 61 74 69   but the operati
71b0: 6f 6e 0a 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79  on.is completely
71c0: 20 64 69 66 66 65 72 65 6e 74 2e 3c 2f 70 3e 0a   different.</p>.
71d0: 0a 3c 70 3e 49 66 20 74 68 65 20 45 58 50 4c 41  .<p>If the EXPLA
71e0: 49 4e 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61  IN keyword appea
71f0: 72 73 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74  rs before any ot
7200: 68 65 72 20 53 51 4c 69 74 65 20 53 51 4c 20 63  her SQLite SQL c
7210: 6f 6d 6d 61 6e 64 0a 74 68 65 6e 20 69 6e 73 74  ommand.then inst
7220: 65 61 64 20 6f 66 20 61 63 74 75 61 6c 6c 79 20  ead of actually 
7230: 65 78 65 63 75 74 69 6e 67 20 74 68 65 20 63 6f  executing the co
7240: 6d 6d 61 6e 64 2c 20 74 68 65 20 53 51 4c 69 74  mmand, the SQLit
7250: 65 20 6c 69 62 72 61 72 79 20 77 69 6c 6c 0a 72  e library will.r
7260: 65 70 6f 72 74 20 62 61 63 6b 20 74 68 65 20 73  eport back the s
7270: 65 71 75 65 6e 63 65 20 6f 66 20 76 69 72 74 75  equence of virtu
7280: 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72  al machine instr
7290: 75 63 74 69 6f 6e 73 20 69 74 20 77 6f 75 6c 64  uctions it would
72a0: 20 68 61 76 65 0a 75 73 65 64 20 74 6f 20 65 78   have.used to ex
72b0: 65 63 75 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e  ecute the comman
72c0: 64 20 68 61 64 20 74 68 65 20 45 58 50 4c 41 49  d had the EXPLAI
72d0: 4e 20 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62 65  N keyword not be
72e0: 65 6e 20 70 72 65 73 65 6e 74 2e 0a 46 6f 72 20  en present..For 
72f0: 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
7300: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 76 69 72  mation about vir
7310: 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73  tual machine ins
7320: 74 72 75 63 74 69 6f 6e 73 20 73 65 65 0a 74 68  tructions see.th
7330: 65 20 3c 61 20 68 72 65 66 3d 22 61 72 63 68 2e  e <a href="arch.
7340: 68 74 6d 6c 22 3e 61 72 63 68 69 74 65 63 74 75  html">architectu
7350: 72 65 20 64 65 73 63 72 69 70 74 69 6f 6e 3c 2f  re description</
7360: 61 3e 20 6f 72 20 74 68 65 20 64 6f 63 75 6d 65  a> or the docume
7370: 6e 74 61 74 69 6f 6e 0a 6f 6e 20 3c 61 20 68 72  ntation.on <a hr
7380: 65 66 3d 22 6f 70 63 6f 64 65 2e 68 74 6d 6c 22  ef="opcode.html"
7390: 3e 61 76 61 69 6c 61 62 6c 65 20 6f 70 63 6f 64  >available opcod
73a0: 65 73 3c 2f 61 3e 20 66 6f 72 20 74 68 65 20 76  es</a> for the v
73b0: 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 2e 3c  irtual machine.<
73c0: 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  /p>.}...Section 
73d0: 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70 72 0a  expression expr.
73e0: 0a 53 79 6e 74 61 78 20 7b 65 78 70 72 7d 20 7b  .Syntax {expr} {
73f0: 0a 3c 65 78 70 72 3e 20 3c 62 69 6e 61 72 79 2d  .<expr> <binary-
7400: 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78  op> <expr> |.<ex
7410: 70 72 3e 20 3c 6c 69 6b 65 2d 6f 70 3e 20 3c 65  pr> <like-op> <e
7420: 78 70 72 3e 20 7c 0a 3c 75 6e 61 72 79 2d 6f 70  xpr> |.<unary-op
7430: 3e 20 3c 65 78 70 72 3e 20 7c 0a 28 20 3c 65 78  > <expr> |.( <ex
7440: 70 72 3e 20 29 20 7c 0a 3c 63 6f 6c 75 6d 6e 2d  pr> ) |.<column-
7450: 6e 61 6d 65 3e 20 7c 0a 3c 74 61 62 6c 65 2d 6e  name> |.<table-n
7460: 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e  ame> . <column-n
7470: 61 6d 65 3e 20 7c 0a 3c 64 61 74 61 62 61 73 65  ame> |.<database
7480: 2d 6e 61 6d 65 3e 20 2e 20 3c 74 61 62 6c 65 2d  -name> . <table-
7490: 6e 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d  name> . <column-
74a0: 6e 61 6d 65 3e 20 7c 0a 3c 6c 69 74 65 72 61 6c  name> |.<literal
74b0: 2d 76 61 6c 75 65 3e 20 7c 0a 3c 66 75 6e 63 74  -value> |.<funct
74c0: 69 6f 6e 2d 6e 61 6d 65 3e 20 28 20 3c 65 78 70  ion-name> ( <exp
74d0: 72 2d 6c 69 73 74 3e 20 7c 20 53 54 41 52 20 29  r-list> | STAR )
74e0: 20 7c 0a 3c 65 78 70 72 3e 20 49 53 4e 55 4c 4c   |.<expr> ISNULL
74f0: 20 7c 0a 3c 65 78 70 72 3e 20 4e 4f 54 4e 55 4c   |.<expr> NOTNUL
7500: 4c 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d  L |.<expr> [NOT]
7510: 20 42 45 54 57 45 45 4e 20 3c 65 78 70 72 3e 20   BETWEEN <expr> 
7520: 41 4e 44 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78  AND <expr> |.<ex
7530: 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c  pr> [NOT] IN ( <
7540: 76 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a  value-list> ) |.
7550: 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20  <expr> [NOT] IN 
7560: 28 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d  ( <select-statem
7570: 65 6e 74 3e 20 29 20 7c 0a 3c 65 78 70 72 3e 20  ent> ) |.<expr> 
7580: 5b 4e 4f 54 5d 20 49 4e 20 5b 3c 64 61 74 61 62  [NOT] IN [<datab
7590: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
75a0: 62 6c 65 2d 6e 61 6d 65 3e 20 7c 0a 28 20 3c 73  ble-name> |.( <s
75b0: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
75c0: 20 29 20 7c 0a 43 41 53 45 20 5b 3c 65 78 70 72   ) |.CASE [<expr
75d0: 3e 5d 20 4c 50 20 57 48 45 4e 20 3c 65 78 70 72  >] LP WHEN <expr
75e0: 3e 20 54 48 45 4e 20 3c 65 78 70 72 3e 20 52 50  > THEN <expr> RP
75f0: 50 4c 55 53 20 5b 45 4c 53 45 20 3c 65 78 70 72  PLUS [ELSE <expr
7600: 3e 5d 20 45 4e 44 0a 7d 20 7b 6c 69 6b 65 2d 6f  >] END.} {like-o
7610: 70 7d 20 7b 0a 4c 49 4b 45 20 7c 20 47 4c 4f 42  p} {.LIKE | GLOB
7620: 20 7c 20 4e 4f 54 20 4c 49 4b 45 20 7c 20 4e 4f   | NOT LIKE | NO
7630: 54 20 47 4c 4f 42 0a 7d 0a 0a 70 75 74 73 20 7b  T GLOB.}..puts {
7640: 0a 3c 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e  .<p>This section
7650: 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72   is different fr
7660: 6f 6d 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20  om the others.  
7670: 4d 6f 73 74 20 6f 74 68 65 72 20 73 65 63 74 69  Most other secti
7680: 6f 6e 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75  ons of.this docu
7690: 6d 65 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74  ment talks about
76a0: 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 53 51   a particular SQ
76b0: 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73  L command.  This
76c0: 20 73 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f   section does.no
76d0: 74 20 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73  t talk about a s
76e0: 74 61 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e  tandalone comman
76f0: 64 20 62 75 74 20 61 62 6f 75 74 20 22 65 78 70  d but about "exp
7700: 72 65 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20  ressions" which 
7710: 61 72 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e  are .subcomponen
7720: 74 73 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72  ts of most other
7730: 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a   commands.</p>..
7740: 3c 70 3e 53 51 4c 69 74 65 20 75 6e 64 65 72 73  <p>SQLite unders
7750: 74 61 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77  tands the follow
7760: 69 6e 67 20 62 69 6e 61 72 79 20 6f 70 65 72 61  ing binary opera
7770: 74 6f 72 73 2c 20 69 6e 20 6f 72 64 65 72 20 66  tors, in order f
7780: 72 6f 6d 0a 68 69 67 68 65 73 74 20 74 6f 20 6c  rom.highest to l
7790: 6f 77 65 73 74 20 70 72 65 63 65 64 65 6e 63 65  owest precedence
77a0: 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  :</p>..<blockquo
77b0: 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63  te><pre>.<font c
77c0: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c  olor="#2c2cf0"><
77d0: 62 69 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20  big>||.*    /   
77e0: 20 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c   %.+    -.&lt;&l
77f0: 74 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20  t;   &gt;&gt;   
7800: 26 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20  &amp;    |.&lt; 
7810: 20 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20     &lt;=   &gt; 
7820: 20 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d     &gt;=.=    ==
7830: 20 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b     !=   &lt;&gt;
7840: 20 20 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44 20     </big>IN.AND 
7850: 20 20 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70    .OR</font>.</p
7860: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
7870: 0a 0a 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75  ..<p>Supported u
7880: 6e 61 72 79 20 6f 70 65 72 61 74 65 72 73 20 61  nary operaters a
7890: 72 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c  re these:</p>..<
78a0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
78b0: 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32  .<font color="#2
78c0: 63 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20  c2cf0"><big>-   
78d0: 20 2b 20 20 20 20 21 20 20 20 20 7e 3c 2f 62 69   +    !    ~</bi
78e0: 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e  g></font>.</pre>
78f0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
7900: 70 3e 41 6e 79 20 53 51 4c 69 74 65 20 76 61 6c  p>Any SQLite val
7910: 75 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 61  ue can be used a
7920: 73 20 70 61 72 74 20 6f 66 20 61 6e 20 65 78 70  s part of an exp
7930: 72 65 73 73 69 6f 6e 2e 20 20 0a 46 6f 72 20 61  ression.  .For a
7940: 72 69 74 68 6d 65 74 69 63 20 6f 70 65 72 61 74  rithmetic operat
7950: 69 6f 6e 73 2c 20 69 6e 74 65 67 65 72 73 20 61  ions, integers a
7960: 72 65 20 74 72 65 61 74 65 64 20 61 73 20 69 6e  re treated as in
7970: 74 65 67 65 72 73 2e 0a 53 74 72 69 6e 67 73 20  tegers..Strings 
7980: 61 72 65 20 66 69 72 73 74 20 63 6f 6e 76 65 72  are first conver
7990: 74 65 64 20 74 6f 20 72 65 61 6c 20 6e 75 6d 62  ted to real numb
79a0: 65 72 73 20 75 73 69 6e 67 20 3c 62 3e 61 74 6f  ers using <b>ato
79b0: 66 28 29 3c 2f 62 3e 2e 0a 46 6f 72 20 63 6f 6d  f()</b>..For com
79c0: 70 61 72 69 73 6f 6e 20 6f 70 65 72 61 74 6f 72  parison operator
79d0: 73 2c 20 6e 75 6d 62 65 72 73 20 63 6f 6d 70 61  s, numbers compa
79e0: 72 65 20 61 73 20 6e 75 6d 62 65 72 73 20 61 6e  re as numbers an
79f0: 64 20 73 74 72 69 6e 67 73 0a 63 6f 6d 70 61 72  d strings.compar
7a00: 65 20 75 73 69 6e 67 20 74 68 65 20 3c 62 3e 73  e using the <b>s
7a10: 74 72 63 6d 70 28 29 3c 2f 62 3e 20 66 75 6e 63  trcmp()</b> func
7a20: 74 69 6f 6e 2e 0a 4e 6f 74 65 20 74 68 61 74 20  tion..Note that 
7a30: 74 68 65 72 65 20 61 72 65 20 74 77 6f 20 76 61  there are two va
7a40: 72 69 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20  riations of the 
7a50: 65 71 75 61 6c 73 20 61 6e 64 20 6e 6f 74 20 65  equals and not e
7a60: 71 75 61 6c 73 0a 6f 70 65 72 61 74 6f 72 73 2e  quals.operators.
7a70: 20 20 45 71 75 61 6c 73 20 63 61 6e 20 62 65 20    Equals can be 
7a80: 65 69 74 68 65 72 7d 0a 70 75 74 73 20 22 5b 4f  either}.puts "[O
7a90: 70 65 72 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f  perator =] or [O
7aa0: 70 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68 65  perator ==]..The
7ab0: 20 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72   non-equals oper
7ac0: 61 74 6f 72 20 63 61 6e 20 62 65 20 65 69 74 68  ator can be eith
7ad0: 65 72 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d  er.[Operator !=]
7ae0: 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26   or [Operator {&
7af0: 6c 74 3b 26 67 74 3b 7d 5d 2e 0a 54 68 65 20 5b  lt;&gt;}]..The [
7b00: 4f 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65  Operator ||] ope
7b10: 72 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61  rator is \"conca
7b20: 74 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f  tenate\" - it jo
7b30: 69 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68 65  ins together.the
7b40: 20 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66 20   two strings of 
7b50: 69 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 54 68  its operands..Th
7b60: 65 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72  e operator [Oper
7b70: 61 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73 20  ator %] outputs 
7b80: 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66  the remainder of
7b90: 20 69 74 73 20 6c 65 66 74 20 0a 6f 70 65 72 61   its left .opera
7ba0: 6e 64 20 6d 6f 64 75 6c 6f 20 69 74 73 20 72 69  nd modulo its ri
7bb0: 67 68 74 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e  ght operand.</p>
7bc0: 22 0a 70 75 74 73 20 7b 0a 0a 3c 61 20 6e 61 6d  ".puts {..<a nam
7bd0: 65 3d 22 6c 69 6b 65 22 3e 3c 2f 61 3e 0a 3c 70  e="like"></a>.<p
7be0: 3e 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74  >The LIKE operat
7bf0: 6f 72 20 64 6f 65 73 20 61 20 77 69 6c 64 63 61  or does a wildca
7c00: 72 64 20 63 6f 6d 70 61 72 69 73 69 6f 6e 2e 20  rd comparision. 
7c10: 20 54 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20   The operand.to 
7c20: 74 68 65 20 72 69 67 68 74 20 63 6f 6e 74 61 69  the right contai
7c30: 6e 73 20 74 68 65 20 77 69 6c 64 63 61 72 64 73  ns the wildcards
7c40: 2e 7d 0a 70 75 74 73 20 22 41 20 70 65 72 63 65  .}.puts "A perce
7c50: 6e 74 20 73 79 6d 62 6f 6c 20 5b 4f 70 65 72 61  nt symbol [Opera
7c60: 74 6f 72 20 25 5d 20 69 6e 20 74 68 65 20 72 69  tor %] in the ri
7c70: 67 68 74 20 6f 70 65 72 61 6e 64 0a 6d 61 74 63  ght operand.matc
7c80: 68 65 73 20 61 6e 79 20 73 65 71 75 65 6e 63 65  hes any sequence
7c90: 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65   of zero or more
7ca0: 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20 74   characters on t
7cb0: 68 65 20 6c 65 66 74 2e 0a 41 6e 20 75 6e 64 65  he left..An unde
7cc0: 72 73 63 6f 72 65 20 5b 4f 70 65 72 61 74 6f 72  rscore [Operator
7cd0: 20 5f 5d 20 6f 6e 20 74 68 65 20 72 69 67 68 74   _] on the right
7ce0: 0a 6d 61 74 63 68 65 73 20 61 6e 79 20 73 69 6e  .matches any sin
7cf0: 67 6c 65 20 63 68 61 72 61 63 74 65 72 20 6f 6e  gle character on
7d00: 20 74 68 65 20 6c 65 66 74 2e 22 0a 70 75 74 73   the left.".puts
7d10: 20 7b 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61   {The LIKE opera
7d20: 74 6f 72 20 69 73 0a 6e 6f 74 20 63 61 73 65 20  tor is.not case 
7d30: 73 65 6e 73 69 74 69 76 65 20 61 6e 64 20 77 69  sensitive and wi
7d40: 6c 6c 20 6d 61 74 63 68 20 75 70 70 65 72 20 63  ll match upper c
7d50: 61 73 65 20 63 68 61 72 61 63 74 65 72 73 20 6f  ase characters o
7d60: 6e 20 6f 6e 65 0a 73 69 64 65 20 61 67 61 69 6e  n one.side again
7d70: 73 74 20 6c 6f 77 65 72 20 63 61 73 65 20 63 68  st lower case ch
7d80: 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65 20  aracters on the 
7d90: 6f 74 68 65 72 2e 0a 28 41 20 62 75 67 3a 20 53  other..(A bug: S
7da0: 51 4c 69 74 65 20 6f 6e 6c 79 20 75 6e 64 65 72  QLite only under
7db0: 73 74 61 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77  stands upper/low
7dc0: 65 72 20 63 61 73 65 20 66 6f 72 20 37 2d 62 69  er case for 7-bi
7dd0: 74 20 4c 61 74 69 6e 0a 63 68 61 72 61 63 74 65  t Latin.characte
7de0: 72 73 2e 20 20 48 65 6e 63 65 20 74 68 65 20 4c  rs.  Hence the L
7df0: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20  IKE operator is 
7e00: 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 20 66  case sensitive f
7e10: 6f 72 0a 38 2d 62 69 74 20 69 73 6f 38 38 35 39  or.8-bit iso8859
7e20: 20 63 68 61 72 61 63 74 65 72 73 20 6f 72 20 55   characters or U
7e30: 54 46 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e  TF-8 characters.
7e40: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 74    For example,.t
7e50: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62  he expression <b
7e60: 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e  >'a'&nbsp;LIKE&n
7e70: 62 73 70 3b 27 41 27 3c 2f 62 3e 20 69 73 20 54  bsp;'A'</b> is T
7e80: 52 55 45 20 62 75 74 0a 3c 62 3e 27 26 61 65 6c  RUE but.<b>'&ael
7e90: 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e  ig;'&nbsp;LIKE&n
7ea0: 62 73 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62  bsp;'&AElig;'</b
7eb0: 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e 20 20 54  > is FALSE.).  T
7ec0: 68 65 20 69 6e 66 69 78 20 0a 4c 49 4b 45 20 6f  he infix .LIKE o
7ed0: 70 65 72 61 74 6f 72 20 69 73 20 69 64 65 6e 74  perator is ident
7ee0: 69 63 61 6c 20 74 68 65 20 75 73 65 72 20 66 75  ical the user fu
7ef0: 6e 63 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22  nction <a href="
7f00: 23 6c 69 6b 65 46 75 6e 63 22 3e 0a 6c 69 6b 65  #likeFunc">.like
7f10: 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f  (<i>X</i>,<i>Y</
7f20: 69 3e 29 3c 2f 61 3e 2e 0a 3c 2f 70 3e 0a 0a 3c  i>)</a>..</p>..<
7f30: 61 20 6e 61 6d 65 3d 22 67 6c 6f 62 22 3e 3c 2f  a name="glob"></
7f40: 61 3e 0a 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f  a>.<p>The GLOB o
7f50: 70 65 72 61 74 6f 72 20 69 73 20 73 69 6d 69 6c  perator is simil
7f60: 61 72 20 74 6f 20 4c 49 4b 45 20 62 75 74 20 75  ar to LIKE but u
7f70: 73 65 73 20 74 68 65 20 55 6e 69 78 0a 66 69 6c  ses the Unix.fil
7f80: 65 20 67 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61  e globbing synta
7f90: 78 20 66 6f 72 20 69 74 73 20 77 69 6c 64 63 61  x for its wildca
7fa0: 72 64 73 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42  rds.  Also, GLOB
7fb0: 20 69 73 20 63 61 73 65 0a 73 65 6e 73 69 74 69   is case.sensiti
7fc0: 76 65 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e  ve, unlike LIKE.
7fd0: 20 20 42 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20    Both GLOB and 
7fe0: 4c 49 4b 45 20 6d 61 79 20 62 65 20 70 72 65 63  LIKE may be prec
7ff0: 65 64 65 64 20 62 79 0a 74 68 65 20 4e 4f 54 20  eded by.the NOT 
8000: 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72  keyword to inver
8010: 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74  t the sense of t
8020: 68 65 20 74 65 73 74 2e 20 20 54 68 65 20 69 6e  he test.  The in
8030: 66 69 78 20 47 4c 4f 42 20 0a 6f 70 65 72 61 74  fix GLOB .operat
8040: 6f 72 20 69 73 20 69 64 65 6e 74 69 63 61 6c 20  or is identical 
8050: 74 68 65 20 75 73 65 72 20 66 75 6e 63 74 69 6f  the user functio
8060: 6e 20 3c 61 20 68 72 65 66 3d 22 23 67 6c 6f 62  n <a href="#glob
8070: 46 75 6e 63 22 3e 0a 67 6c 6f 62 28 3c 69 3e 58  Func">.glob(<i>X
8080: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
8090: 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f  a>.</p>..<p>A co
80a0: 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65  lumn name can be
80b0: 20 61 6e 79 20 6f 66 20 74 68 65 20 6e 61 6d 65   any of the name
80c0: 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65  s defined in the
80d0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 0a 73 74   CREATE TABLE.st
80e0: 61 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f  atement or one o
80f0: 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  f the following 
8100: 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69  special identifi
8110: 65 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f  ers: "<b>ROWID</
8120: 62 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e  b>",."<b>OID</b>
8130: 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44  ", or "<b>_ROWID
8140: 5f 3c 2f 62 3e 22 2e 0a 54 68 65 73 65 20 73 70  _</b>"..These sp
8150: 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72  ecial identifier
8160: 73 20 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74  s all describe t
8170: 68 65 0a 75 6e 69 71 75 65 20 72 61 6e 64 6f 6d  he.unique random
8180: 20 69 6e 74 65 67 65 72 20 6b 65 79 20 28 74 68   integer key (th
8190: 65 20 22 72 6f 77 20 6b 65 79 22 29 20 61 73 73  e "row key") ass
81a0: 6f 63 69 61 74 65 64 20 77 69 74 68 20 65 76 65  ociated with eve
81b0: 72 79 20 0a 72 6f 77 20 6f 66 20 65 76 65 72 79  ry .row of every
81c0: 20 74 61 62 6c 65 2e 0a 54 68 65 20 73 70 65 63   table..The spec
81d0: 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20  ial identifiers 
81e0: 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f 20 74 68  only refer to th
81f0: 65 20 72 6f 77 20 6b 65 79 20 69 66 20 74 68 65  e row key if the
8200: 20 43 52 45 41 54 45 20 54 41 42 4c 45 0a 73 74   CREATE TABLE.st
8210: 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74  atement does not
8220: 20 64 65 66 69 6e 65 20 61 20 72 65 61 6c 20 63   define a real c
8230: 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68 65 20 73  olumn with the s
8240: 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f 77 20 6b  ame name.  Row k
8250: 65 79 73 0a 61 63 74 20 6c 69 6b 65 20 72 65 61  eys.act like rea
8260: 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 73 2e 20  d-only columns. 
8270: 20 41 20 72 6f 77 20 6b 65 79 20 63 61 6e 20 62   A row key can b
8280: 65 20 75 73 65 64 20 61 6e 79 77 68 65 72 65 20  e used anywhere 
8290: 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e  a regular.column
82a0: 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 65 78   can be used, ex
82b0: 63 65 70 74 20 74 68 61 74 20 79 6f 75 20 63 61  cept that you ca
82c0: 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20  nnot change the 
82d0: 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f 77 20 6b  value.of a row k
82e0: 65 79 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20  ey in an UPDATE 
82f0: 6f 72 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d  or INSERT statem
8300: 65 6e 74 2e 0a 22 53 45 4c 45 43 54 20 2a 20 2e  ent.."SELECT * .
8310: 2e 2e 22 20 64 6f 65 73 20 6e 6f 74 20 72 65 74  .." does not ret
8320: 75 72 6e 20 74 68 65 20 72 6f 77 20 6b 65 79 2e  urn the row key.
8330: 3c 2f 70 3e 0a 0a 3c 70 3e 53 45 4c 45 43 54 20  </p>..<p>SELECT 
8340: 73 74 61 74 65 6d 65 6e 74 73 20 63 61 6e 20 61  statements can a
8350: 70 70 65 61 72 20 69 6e 20 65 78 70 72 65 73 73  ppear in express
8360: 69 6f 6e 73 20 61 73 20 65 69 74 68 65 72 20 74  ions as either t
8370: 68 65 0a 72 69 67 68 74 2d 68 61 6e 64 20 6f 70  he.right-hand op
8380: 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20  erand of the IN 
8390: 6f 70 65 72 61 74 6f 72 20 6f 72 20 61 73 20 61  operator or as a
83a0: 20 73 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79   scalar quantity
83b0: 2e 0a 49 6e 20 62 6f 74 68 20 63 61 73 65 73 2c  ..In both cases,
83c0: 20 74 68 65 20 53 45 4c 45 43 54 20 73 68 6f 75   the SELECT shou
83d0: 6c 64 20 68 61 76 65 20 6f 6e 6c 79 20 61 20 73  ld have only a s
83e0: 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 20 69 6e 20  ingle column in 
83f0: 69 74 73 0a 72 65 73 75 6c 74 2e 20 20 43 6f 6d  its.result.  Com
8400: 70 6f 75 6e 64 20 53 45 4c 45 43 54 73 20 28 63  pound SELECTs (c
8410: 6f 6e 6e 65 63 74 65 64 20 77 69 74 68 20 6b 65  onnected with ke
8420: 79 77 6f 72 64 73 20 6c 69 6b 65 20 55 4e 49 4f  ywords like UNIO
8430: 4e 20 6f 72 0a 45 58 43 45 50 54 29 20 61 72 65  N or.EXCEPT) are
8440: 20 61 6c 6c 6f 77 65 64 2e 0a 41 20 53 45 4c 45   allowed..A SELE
8450: 43 54 20 69 6e 20 61 6e 20 65 78 70 72 65 73 73  CT in an express
8460: 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64  ion is evaluated
8470: 20 6f 6e 63 65 20 62 65 66 6f 72 65 20 61 6e 79   once before any
8480: 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73 69 6e   other processin
8490: 67 0a 69 73 20 70 65 72 66 6f 72 6d 65 64 2c 20  g.is performed, 
84a0: 73 6f 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 65  so none of the e
84b0: 78 70 72 65 73 73 69 6f 6e 73 20 77 69 74 68 69  xpressions withi
84c0: 6e 20 74 68 65 20 73 65 6c 65 63 74 20 69 74 73  n the select its
84d0: 65 6c 66 20 63 61 6e 0a 72 65 66 65 72 20 74 6f  elf can.refer to
84e0: 20 71 75 61 6e 74 69 74 69 65 73 20 69 6e 20 74   quantities in t
84f0: 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 65 78  he containing ex
8500: 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  pression.</p>..<
8510: 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54 20  p>When a SELECT 
8520: 69 73 20 74 68 65 20 72 69 67 68 74 20 6f 70 65  is the right ope
8530: 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20 6f  rand of the IN o
8540: 70 65 72 61 74 6f 72 2c 20 74 68 65 20 49 4e 0a  perator, the IN.
8550: 6f 70 65 72 61 74 6f 72 20 72 65 74 75 72 6e 73  operator returns
8560: 20 54 52 55 45 20 69 66 20 74 68 65 20 72 65 73   TRUE if the res
8570: 75 6c 74 20 6f 66 20 74 68 65 20 6c 65 66 74 20  ult of the left 
8580: 6f 70 65 72 61 6e 64 20 69 73 20 61 6e 79 20 6f  operand is any o
8590: 66 0a 74 68 65 20 76 61 6c 75 65 73 20 67 65 6e  f.the values gen
85a0: 65 72 61 74 65 64 20 62 79 20 74 68 65 20 73 65  erated by the se
85b0: 6c 65 63 74 2e 20 20 54 68 65 20 49 4e 20 6f 70  lect.  The IN op
85c0: 65 72 61 74 6f 72 20 6d 61 79 20 62 65 20 70 72  erator may be pr
85d0: 65 63 65 64 65 64 0a 62 79 20 74 68 65 20 4e 4f  eceded.by the NO
85e0: 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76  T keyword to inv
85f0: 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66  ert the sense of
8600: 20 74 68 65 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a   the test.</p>..
8610: 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54  <p>When a SELECT
8620: 20 61 70 70 65 61 72 73 20 77 69 74 68 69 6e 20   appears within 
8630: 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 62 75  an expression bu
8640: 74 20 69 73 20 6e 6f 74 20 74 68 65 20 72 69 67  t is not the rig
8650: 68 74 0a 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e  ht.operand of an
8660: 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20 74 68   IN operator, th
8670: 65 6e 20 74 68 65 20 66 69 72 73 74 20 72 6f 77  en the first row
8680: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f   of the result o
8690: 66 20 74 68 65 0a 53 45 4c 45 43 54 20 62 65 63  f the.SELECT bec
86a0: 6f 6d 65 73 20 74 68 65 20 76 61 6c 75 65 20 75  omes the value u
86b0: 73 65 64 20 69 6e 20 74 68 65 20 65 78 70 72 65  sed in the expre
86c0: 73 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 53  ssion.  If the S
86d0: 45 4c 45 43 54 20 79 69 65 6c 64 73 0a 6d 6f 72  ELECT yields.mor
86e0: 65 20 74 68 61 6e 20 6f 6e 65 20 72 65 73 75 6c  e than one resul
86f0: 74 20 72 6f 77 2c 20 61 6c 6c 20 72 6f 77 73 20  t row, all rows 
8700: 61 66 74 65 72 20 74 68 65 20 66 69 72 73 74 20  after the first 
8710: 61 72 65 20 69 67 6e 6f 72 65 64 2e 20 20 49 66  are ignored.  If
8720: 0a 74 68 65 20 53 45 4c 45 43 54 20 79 65 69 6c  .the SELECT yeil
8730: 64 73 20 6e 6f 20 72 6f 77 73 2c 20 74 68 65 6e  ds no rows, then
8740: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
8750: 65 20 53 45 4c 45 43 54 20 69 73 20 4e 55 4c 4c  e SELECT is NULL
8760: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20 73  .</p>..<p>Both s
8770: 69 6d 70 6c 65 20 61 6e 64 20 61 67 67 72 65 67  imple and aggreg
8780: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ate functions ar
8790: 65 20 73 75 70 70 6f 72 74 65 64 2e 20 20 41 20  e supported.  A 
87a0: 73 69 6d 70 6c 65 0a 66 75 6e 63 74 69 6f 6e 20  simple.function 
87b0: 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61  can be used in a
87c0: 6e 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20  ny expression.  
87d0: 53 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73  Simple functions
87e0: 20 72 65 74 75 72 6e 0a 61 20 72 65 73 75 6c 74   return.a result
87f0: 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 61 73   immediately bas
8800: 65 64 20 6f 6e 20 74 68 65 69 72 20 69 6e 70 75  ed on their inpu
8810: 74 73 2e 20 20 41 67 67 72 65 67 61 74 65 20 66  ts.  Aggregate f
8820: 75 6e 63 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c  unctions.may onl
8830: 79 20 62 65 20 75 73 65 64 20 69 6e 20 61 20 53  y be used in a S
8840: 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e  ELECT statement.
8850: 20 20 41 67 67 72 65 67 61 74 65 20 66 75 6e 63    Aggregate func
8860: 74 69 6f 6e 73 20 63 6f 6d 70 75 74 65 0a 74 68  tions compute.th
8870: 65 69 72 20 72 65 73 75 6c 74 20 61 63 72 6f 73  eir result acros
8880: 73 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68  s all rows of th
8890: 65 20 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70  e result set.</p
88a0: 3e 0a 0a 3c 70 3e 54 68 65 20 66 75 6e 63 74 69  >..<p>The functi
88b0: 6f 6e 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20  ons shown below 
88c0: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79  are available by
88d0: 20 64 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74   default.  Addit
88e0: 69 6f 6e 61 6c 0a 66 75 6e 63 74 69 6f 6e 73 20  ional.functions 
88f0: 6d 61 79 20 62 65 20 77 72 69 74 74 65 6e 20 69  may be written i
8900: 6e 20 43 20 61 6e 64 20 61 64 64 65 64 20 74 6f  n C and added to
8910: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 65 6e   the database en
8920: 67 69 6e 65 20 75 73 69 6e 67 0a 74 68 65 20 3c  gine using.the <
8930: 61 20 68 72 65 66 3d 22 63 5f 69 6e 74 65 72 66  a href="c_interf
8940: 61 63 65 2e 68 74 6d 6c 23 63 66 75 6e 63 22 3e  ace.html#cfunc">
8950: 73 71 6c 69 74 65 5f 63 72 65 61 74 65 5f 66 75  sqlite_create_fu
8960: 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e 0a 41 50 49  nction()</a>.API
8970: 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f  .</p>..<table bo
8980: 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69  rder=0 cellpaddi
8990: 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20  ng=10>.<tr>.<td 
89a0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
89b0: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
89c0: 3d 31 32 30 3e 61 62 73 28 3c 69 3e 58 3c 2f 69  =120>abs(<i>X</i
89d0: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
89e0: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
89f0: 74 68 65 20 61 62 73 6f 6c 75 74 65 20 76 61 6c  the absolute val
8a00: 75 65 20 6f 66 20 61 72 67 75 6d 65 6e 74 20 3c  ue of argument <
8a10: 69 3e 58 3c 2f 69 3e 2e 3c 2f 74 64 3e 0a 3c 2f  i>X</i>.</td>.</
8a20: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
8a30: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
8a40: 3d 22 72 69 67 68 74 22 3e 63 6f 61 6c 65 73 63  ="right">coalesc
8a50: 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c  e(<i>X</i>,<i>Y<
8a60: 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74  /i>,...)</td>.<t
8a70: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
8a80: 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20  eturn a copy of 
8a90: 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55  the first non-NU
8aa0: 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 66  LL argument.  If
8ab0: 0a 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73 20 61  .all arguments a
8ac0: 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20 4e 55 4c  re NULL then NUL
8ad0: 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20  L is returned.  
8ae0: 54 68 65 72 65 20 6d 75 73 74 20 62 65 20 61 74  There must be at
8af0: 20 6c 65 61 73 74 20 0a 32 20 61 72 67 75 6d 65   least .2 argume
8b00: 6e 74 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  nts.</td>.</tr>.
8b10: 0a 3c 74 72 3e 0a 3c 61 20 6e 61 6d 65 3d 22 67  .<tr>.<a name="g
8b20: 6c 6f 62 46 75 6e 63 22 3e 3c 2f 61 3e 0a 3c 74  lobFunc"></a>.<t
8b30: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
8b40: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 67 6c 6f  lign="right">glo
8b50: 62 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c  b(<i>X</i>,<i>Y<
8b60: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
8b70: 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68 69 73 20  lign="top">This 
8b80: 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64  function is used
8b90: 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68   to implement th
8ba0: 65 0a 22 3c 62 3e 59 20 47 4c 4f 42 20 58 3c 2f  e."<b>Y GLOB X</
8bb0: 62 3e 22 20 73 79 6e 74 61 78 20 6f 66 20 53 51  b>" syntax of SQ
8bc0: 4c 69 74 65 2e 20 20 54 68 65 0a 3c 61 20 68 72  Lite.  The.<a hr
8bd0: 65 66 3d 22 63 5f 69 6e 74 65 72 66 61 63 65 2e  ef="c_interface.
8be0: 68 74 6d 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69  html#cfunc">sqli
8bf0: 74 65 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  te_create_functi
8c00: 6f 6e 28 29 3c 2f 61 3e 20 0a 69 6e 74 65 72 66  on()</a> .interf
8c10: 61 63 65 20 63 61 6e 0a 62 65 20 75 73 65 64 20  ace can.be used 
8c20: 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73  to override this
8c30: 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68   function and th
8c40: 65 72 65 62 79 20 63 68 61 6e 67 65 20 74 68 65  ereby change the
8c50: 20 6f 70 65 72 61 74 69 6f 6e 0a 6f 66 20 74 68   operation.of th
8c60: 65 20 3c 61 20 68 72 65 66 3d 22 23 67 6c 6f 62  e <a href="#glob
8c70: 22 3e 47 4c 4f 42 3c 2f 61 3e 20 6f 70 65 72 61  ">GLOB</a> opera
8c80: 74 6f 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  tor.</td>.</tr>.
8c90: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
8ca0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
8cb0: 67 68 74 22 3e 69 66 6e 75 6c 6c 28 3c 69 3e 58  ght">ifnull(<i>X
8cc0: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
8cd0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
8ce0: 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f  top">Return a co
8cf0: 70 79 20 6f 66 20 74 68 65 20 66 69 72 73 74 20  py of the first 
8d00: 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e  non-NULL argumen
8d10: 74 2e 20 20 49 66 0a 62 6f 74 68 20 61 72 67 75  t.  If.both argu
8d20: 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20 74  ments are NULL t
8d30: 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74 75  hen NULL is retu
8d40: 72 6e 65 64 2e 20 54 68 69 73 20 62 65 68 61 76  rned. This behav
8d50: 65 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 0a  es the same as .
8d60: 3c 62 3e 63 6f 61 6c 65 73 63 65 28 29 3c 2f 62  <b>coalesce()</b
8d70: 3e 20 61 62 6f 76 65 2e 3c 2f 74 64 3e 0a 3c 2f  > above.</td>.</
8d80: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
8d90: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
8da0: 3d 22 72 69 67 68 74 22 3e 6c 61 73 74 5f 69 6e  ="right">last_in
8db0: 73 65 72 74 5f 72 6f 77 69 64 28 29 3c 2f 74 64  sert_rowid()</td
8dc0: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8dd0: 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 52 4f  p">Return the RO
8de0: 57 49 44 20 6f 66 20 74 68 65 20 6c 61 73 74 20  WID of the last 
8df0: 72 6f 77 20 69 6e 73 65 72 74 20 66 72 6f 6d 20  row insert from 
8e00: 74 68 69 73 0a 63 6f 6e 6e 65 63 74 69 6f 6e 20  this.connection 
8e10: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  to the database.
8e20: 20 20 54 68 69 73 20 69 73 20 74 68 65 20 73 61    This is the sa
8e30: 6d 65 20 76 61 6c 75 65 20 74 68 61 74 20 77 6f  me value that wo
8e40: 75 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64 0a  uld be returned.
8e50: 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69  from the <b>sqli
8e60: 74 65 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  te_last_insert_r
8e70: 6f 77 69 64 28 29 3c 2f 62 3e 20 41 50 49 20 66  owid()</b> API f
8e80: 75 6e 63 74 69 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f  unction.</td>.</
8e90: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
8ea0: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
8eb0: 3d 22 72 69 67 68 74 22 3e 6c 65 6e 67 74 68 28  ="right">length(
8ec0: 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>X</i>)</td>.<
8ed0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
8ee0: 52 65 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e  Return the strin
8ef0: 67 20 6c 65 6e 67 74 68 20 6f 66 20 3c 69 3e 58  g length of <i>X
8f00: 3c 2f 69 3e 20 69 6e 20 63 68 61 72 61 63 74 65  </i> in characte
8f10: 72 73 2e 0a 49 66 20 53 51 4c 69 74 65 20 69 73  rs..If SQLite is
8f20: 20 63 6f 6e 66 69 67 75 72 65 64 20 74 6f 20 73   configured to s
8f30: 75 70 70 6f 72 74 20 55 54 46 2d 38 2c 20 74 68  upport UTF-8, th
8f40: 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  en the number of
8f50: 20 55 54 46 2d 38 0a 63 68 61 72 61 63 74 65 72   UTF-8.character
8f60: 73 20 69 73 20 72 65 74 75 72 6e 65 64 2c 20 6e  s is returned, n
8f70: 6f 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ot the number of
8f80: 20 62 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74   bytes.</td>.</t
8f90: 72 3e 0a 0a 3c 74 72 3e 0a 3c 61 20 6e 61 6d 65  r>..<tr>.<a name
8fa0: 3d 22 6c 69 6b 65 46 75 6e 63 22 3e 3c 2f 61 3e  ="likeFunc"></a>
8fb0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
8fc0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
8fd0: 6c 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  like(<i>X</i>,<i
8fe0: 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >Y</i>)</td>.<td
8ff0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68   valign="top">Th
9000: 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75  is function is u
9010: 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  sed to implement
9020: 20 74 68 65 0a 22 3c 62 3e 59 20 4c 49 4b 45 20   the."<b>Y LIKE 
9030: 58 3c 2f 62 3e 22 20 73 79 6e 74 61 78 20 6f 66  X</b>" syntax of
9040: 20 53 51 4c 2e 20 20 54 68 65 0a 3c 61 20 68 72   SQL.  The.<a hr
9050: 65 66 3d 22 63 5f 69 6e 74 65 72 66 61 63 65 2e  ef="c_interface.
9060: 68 74 6d 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69  html#cfunc">sqli
9070: 74 65 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  te_create_functi
9080: 6f 6e 28 29 3c 2f 61 3e 20 0a 69 6e 74 65 72 66  on()</a> .interf
9090: 61 63 65 20 63 61 6e 0a 62 65 20 75 73 65 64 20  ace can.be used 
90a0: 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73  to override this
90b0: 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68   function and th
90c0: 65 72 65 62 79 20 63 68 61 6e 67 65 20 74 68 65  ereby change the
90d0: 20 6f 70 65 72 61 74 69 6f 6e 0a 6f 66 20 74 68   operation.of th
90e0: 65 20 3c 61 20 68 72 65 66 3d 22 23 6c 69 6b 65  e <a href="#like
90f0: 22 3e 4c 49 4b 45 3c 2f 61 3e 20 6f 70 65 72 61  ">LIKE</a> opera
9100: 74 6f 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  tor.</td>.</tr>.
9110: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
9120: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
9130: 67 68 74 22 3e 6c 6f 77 65 72 28 3c 69 3e 58 3c  ght">lower(<i>X<
9140: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
9150: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
9160: 6e 20 61 20 63 6f 70 79 20 6f 66 20 73 74 72 69  n a copy of stri
9170: 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 6c 6c  ng <i>X</i> will
9180: 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72 73 0a   all characters.
9190: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77  converted to low
91a0: 65 72 20 63 61 73 65 2e 20 20 54 68 65 20 43 20  er case.  The C 
91b0: 6c 69 62 72 61 72 79 20 3c 62 3e 74 6f 6c 6f 77  library <b>tolow
91c0: 65 72 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e 65  er()</b> routine
91d0: 20 69 73 20 75 73 65 64 0a 66 6f 72 20 74 68 65   is used.for the
91e0: 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20 77 68 69   conversion, whi
91f0: 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  ch means that th
9200: 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68  is function migh
9210: 74 20 6e 6f 74 0a 77 6f 72 6b 20 63 6f 72 72 65  t not.work corre
9220: 63 74 6c 79 20 6f 6e 20 55 54 46 2d 38 20 63 68  ctly on UTF-8 ch
9230: 61 72 61 63 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c  aracters.</td>.<
9240: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
9250: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
9260: 6e 3d 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69  n="right">max(<i
9270: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c  >X</i>,<i>Y</i>,
9280: 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  ...)</td>.<td va
9290: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
92a0: 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77  n the argument w
92b0: 69 74 68 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ith the maximum 
92c0: 76 61 6c 75 65 2e 20 20 41 72 67 75 6d 65 6e 74  value.  Argument
92d0: 73 0a 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73  s.may be strings
92e0: 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20   in addition to 
92f0: 6e 75 6d 62 65 72 73 2e 20 20 54 68 65 20 6d 61  numbers.  The ma
9300: 78 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64  ximum value is d
9310: 65 74 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65  etermined.by the
9320: 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65   usual sort orde
9330: 72 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62  r.  Note that <b
9340: 3e 6d 61 78 28 29 3c 2f 62 3e 20 69 73 20 61 20  >max()</b> is a 
9350: 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20  simple function 
9360: 77 68 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72  when.it has 2 or
9370: 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20   more arguments 
9380: 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20  but converts to 
9390: 61 6e 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  an aggregate fun
93a0: 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f  ction if given.o
93b0: 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67  nly a single arg
93c0: 75 6d 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  ument.</td>.</tr
93d0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
93e0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
93f0: 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c  right">min(<i>X<
9400: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e  /i>,<i>Y</i>,...
9410: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
9420: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
9430: 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68  he argument with
9440: 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c   the minimum val
9450: 75 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d  ue.  Arguments.m
9460: 61 79 20 62 65 20 73 74 72 69 6e 67 73 20 69 6e  ay be strings in
9470: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d   addition to num
9480: 62 65 72 73 2e 20 20 54 68 65 20 6d 6d 69 6e 69  bers.  The mmini
9490: 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74  mum value is det
94a0: 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65 20 75  ermined.by the u
94b0: 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e  sual sort order.
94c0: 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d    Note that <b>m
94d0: 69 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69  in()</b> is a si
94e0: 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68  mple function wh
94f0: 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72 20 6d  en.it has 2 or m
9500: 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
9510: 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e  t converts to an
9520: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
9530: 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c  ion if given.onl
9540: 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  y a single argum
9550: 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ent.</td>.</tr>.
9560: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
9570: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
9580: 67 68 74 22 3e 6e 75 6c 6c 69 66 28 3c 69 3e 58  ght">nullif(<i>X
9590: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
95a0: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
95b0: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
95c0: 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
95d0: 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20  f the arguments 
95e0: 61 72 65 20 64 69 66 66 65 72 65 6e 74 2c 20 0a  are different, .
95f0: 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e  otherwise return
9600: 20 4e 55 4c 4c 2e 3c 2f 74 64 3e 0a 3c 2f 74 72   NULL.</td>.</tr
9610: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
9620: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
9630: 72 69 67 68 74 22 3e 72 61 6e 64 6f 6d 28 2a 29  right">random(*)
9640: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
9650: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20  ="top">Return a 
9660: 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65 72 20 62  random integer b
9670: 65 74 77 65 65 6e 20 2d 32 31 34 37 34 38 33 36  etween -21474836
9680: 34 38 20 61 6e 64 0a 2b 32 31 34 37 34 38 33 36  48 and.+21474836
9690: 34 37 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  47.</td>.</tr>..
96a0: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
96b0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
96c0: 68 74 22 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f  ht">round(<i>X</
96d0: 69 3e 29 3c 62 72 3e 72 6f 75 6e 64 28 3c 69 3e  i>)<br>round(<i>
96e0: 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c  X</i>,<i>Y</i>)<
96f0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9700: 22 74 6f 70 22 3e 52 6f 75 6e 64 20 6f 66 66 20  "top">Round off 
9710: 74 68 65 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c  the number <i>X<
9720: 2f 69 3e 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20  /i> to <i>Y</i> 
9730: 64 69 67 69 74 73 20 74 6f 20 74 68 65 0a 72 69  digits to the.ri
9740: 67 68 74 20 6f 66 20 74 68 65 20 64 65 63 69 6d  ght of the decim
9750: 61 6c 20 70 6f 69 6e 74 2e 20 20 49 66 20 74 68  al point.  If th
9760: 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d  e <i>Y</i> argum
9770: 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20  ent is omitted, 
9780: 30 20 69 73 20 0a 61 73 73 75 6d 65 64 2e 3c 2f  0 is .assumed.</
9790: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
97a0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
97b0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73   align="right">s
97c0: 6f 75 6e 64 65 78 28 3c 69 3e 58 3c 2f 69 3e 29  oundex(<i>X</i>)
97d0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
97e0: 3d 22 74 6f 70 22 3e 43 6f 6d 70 75 74 65 20 74  ="top">Compute t
97f0: 68 65 20 73 6f 75 6e 64 65 78 20 65 6e 63 6f 64  he soundex encod
9800: 69 6e 67 20 6f 66 20 74 68 65 20 73 74 72 69 6e  ing of the strin
9810: 67 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 54 68 65 20  g <i>X</i>..The 
9820: 73 74 72 69 6e 67 20 22 3f 30 30 30 22 20 69 73  string "?000" is
9830: 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65   returned if the
9840: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 4e 55 4c   argument is NUL
9850: 4c 2e 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  L..This function
9860: 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   is omitted from
9870: 20 53 51 4c 69 74 65 20 62 79 20 64 65 66 61 75   SQLite by defau
9880: 6c 74 2e 0a 49 74 20 69 73 20 6f 6e 6c 79 20 61  lt..It is only a
9890: 76 61 69 6c 61 62 6c 65 20 74 68 65 20 2d 44 53  vailable the -DS
98a0: 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 3d 31 20  QLITE_SOUNDEX=1 
98b0: 63 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6f 6e 0a  compiler option.
98c0: 69 73 20 75 73 65 64 20 77 68 65 6e 20 53 51 4c  is used when SQL
98d0: 69 74 65 20 69 73 20 62 75 69 6c 74 2e 3c 2f 74  ite is built.</t
98e0: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
98f0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
9900: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73 71  align="right">sq
9910: 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28 2a 29 3c  lite_version(*)<
9920: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9930: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
9940: 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e 67 20   version string 
9950: 66 6f 72 20 74 68 65 20 53 51 4c 69 74 65 20 6c  for the SQLite l
9960: 69 62 72 61 72 79 0a 74 68 61 74 20 69 73 20 72  ibrary.that is r
9970: 75 6e 6e 69 6e 67 2e 20 20 45 78 61 6d 70 6c 65  unning.  Example
9980: 3a 20 20 22 32 2e 38 2e 30 22 3c 2f 74 64 3e 0a  :  "2.8.0"</td>.
9990: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
99a0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
99b0: 67 6e 3d 22 72 69 67 68 74 22 3e 73 75 62 73 74  gn="right">subst
99c0: 72 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c  r(<i>X</i>,<i>Y<
99d0: 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 3c 2f 74  /i>,<i>Z</i>)</t
99e0: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
99f0: 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 73 75 62  op">Return a sub
9a00: 73 74 72 69 6e 67 20 6f 66 20 69 6e 70 75 74 20  string of input 
9a10: 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20  string <i>X</i> 
9a20: 74 68 61 74 20 62 65 67 69 6e 73 0a 77 69 74 68  that begins.with
9a30: 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d 74 68   the <i>Y</i>-th
9a40: 20 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 77   character and w
9a50: 68 69 63 68 20 69 73 20 3c 69 3e 5a 3c 2f 69 3e  hich is <i>Z</i>
9a60: 20 63 68 61 72 61 63 74 65 72 73 20 6c 6f 6e 67   characters long
9a70: 2e 0a 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20  ..The left-most 
9a80: 63 68 61 72 61 63 74 65 72 20 6f 66 20 3c 69 3e  character of <i>
9a90: 58 3c 2f 69 3e 20 69 73 20 6e 75 6d 62 65 72 20  X</i> is number 
9aa0: 31 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20  1.  If <i>Y</i> 
9ab0: 69 73 20 6e 65 67 61 74 69 76 65 0a 74 68 65 20  is negative.the 
9ac0: 74 68 65 20 66 69 72 73 74 20 63 68 61 72 61 63  the first charac
9ad0: 74 65 72 20 6f 66 20 74 68 65 20 73 75 62 73 74  ter of the subst
9ae0: 72 69 6e 67 20 69 73 20 66 6f 75 6e 64 20 62 79  ring is found by
9af0: 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d 20 74   counting from t
9b00: 68 65 0a 72 69 67 68 74 20 72 61 74 68 65 72 20  he.right rather 
9b10: 74 68 61 6e 20 74 68 65 20 6c 65 66 74 2e 20 20  than the left.  
9b20: 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6e  If SQLite is con
9b30: 66 69 67 75 72 65 64 20 74 6f 20 73 75 70 70 6f  figured to suppo
9b40: 72 74 20 55 54 46 2d 38 2c 0a 74 68 65 6e 20 63  rt UTF-8,.then c
9b50: 68 61 72 61 63 74 65 72 73 20 69 6e 64 69 63 65  haracters indice
9b60: 73 20 72 65 66 65 72 20 74 6f 20 61 63 74 75 61  s refer to actua
9b70: 6c 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65  l UTF-8 characte
9b80: 72 73 2c 20 6e 6f 74 20 62 79 74 65 73 2e 3c 2f  rs, not bytes.</
9b90: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
9ba0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
9bb0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 74   align="right">t
9bc0: 79 70 65 6f 66 28 3c 69 3e 58 3c 2f 69 3e 29 3c  ypeof(<i>X</i>)<
9bd0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9be0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
9bf0: 20 74 79 70 65 20 6f 66 20 74 68 65 20 65 78 70   type of the exp
9c00: 72 65 73 73 69 6f 6e 20 3c 69 3e 58 3c 2f 69 3e  ression <i>X</i>
9c10: 2e 20 20 54 68 65 20 6f 6e 6c 79 20 0a 72 65 74  .  The only .ret
9c20: 75 72 6e 20 76 61 6c 75 65 73 20 61 72 65 20 22  urn values are "
9c30: 6e 75 6d 65 72 69 63 22 20 61 6e 64 20 22 74 65  numeric" and "te
9c40: 78 74 22 2e 20 20 53 51 4c 69 74 65 27 73 20 74  xt".  SQLite's t
9c50: 79 70 65 20 68 61 6e 64 6c 69 6e 67 20 69 73 20  ype handling is 
9c60: 0a 65 78 70 6c 61 69 6e 65 64 20 69 6e 20 3c 61  .explained in <a
9c70: 20 68 72 65 66 3d 22 64 61 74 61 74 79 70 65 73   href="datatypes
9c80: 2e 68 74 6d 6c 22 3e 44 61 74 61 74 79 70 65 73  .html">Datatypes
9c90: 20 69 6e 20 53 51 4c 69 74 65 3c 2f 61 3e 2e 3c   in SQLite</a>.<
9ca0: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
9cb0: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
9cc0: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
9cd0: 75 70 70 65 72 28 3c 69 3e 58 3c 2f 69 3e 29 3c  upper(<i>X</i>)<
9ce0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9cf0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63  "top">Return a c
9d00: 6f 70 79 20 6f 66 20 69 6e 70 75 74 20 73 74 72  opy of input str
9d10: 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 63 6f 6e  ing <i>X</i> con
9d20: 76 65 72 74 65 64 20 74 6f 20 61 6c 6c 0a 75 70  verted to all.up
9d30: 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72 73  per-case letters
9d40: 2e 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74  .  The implement
9d50: 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 75  ation of this fu
9d60: 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 68 65 20  nction uses the 
9d70: 43 20 6c 69 62 72 61 72 79 0a 72 6f 75 74 69 6e  C library.routin
9d80: 65 20 3c 62 3e 74 6f 75 70 70 65 72 28 29 3c 2f  e <b>toupper()</
9d90: 62 3e 20 77 68 69 63 68 20 6d 65 61 6e 73 20 69  b> which means i
9da0: 74 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20 63  t may not work c
9db0: 6f 72 72 65 63 74 6c 79 20 6f 6e 20 0a 55 54 46  orrectly on .UTF
9dc0: 2d 38 20 73 74 72 69 6e 67 73 2e 3c 2f 74 64 3e  -8 strings.</td>
9dd0: 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a  .</tr>.</table>.
9de0: 0a 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f 77 69  .<p>.The followi
9df0: 6e 67 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  ng aggregate fun
9e00: 63 74 69 6f 6e 73 20 61 72 65 20 61 76 61 69 6c  ctions are avail
9e10: 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e  able by default.
9e20: 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a 61 67 67    Additional.agg
9e30: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
9e40: 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20 6d 61   written in C ma
9e50: 79 20 62 65 20 61 64 64 65 64 20 75 73 69 6e 67  y be added using
9e60: 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 63   the .<a href="c
9e70: 5f 69 6e 74 65 72 66 61 63 65 2e 68 74 6d 6c 23  _interface.html#
9e80: 63 66 75 6e 63 22 3e 73 71 6c 69 74 65 5f 63 72  cfunc">sqlite_cr
9e90: 65 61 74 65 5f 61 67 67 72 65 67 61 74 65 28 29  eate_aggregate()
9ea0: 3c 2f 61 3e 20 41 50 49 2e 3c 2f 70 3e 0a 0a 3c  </a> API.</p>..<
9eb0: 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63  table border=0 c
9ec0: 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c  ellpadding=10>.<
9ed0: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
9ee0: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
9ef0: 74 22 20 77 69 64 74 68 3d 31 32 30 3e 61 76 67  t" width=120>avg
9f00: 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a  (<i>X</i>)</td>.
9f10: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
9f20: 3e 52 65 74 75 72 6e 20 74 68 65 20 61 76 65 72  >Return the aver
9f30: 61 67 65 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c  age value of all
9f40: 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69 6e   <i>X</i> within
9f50: 20 61 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c   a group.</td>.<
9f60: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
9f70: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
9f80: 6e 3d 22 72 69 67 68 74 22 3e 63 6f 75 6e 74 28  n="right">count(
9f90: 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 63 6f 75  <i>X</i>)<br>cou
9fa0: 6e 74 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  nt(*)</td>.<td v
9fb0: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68 65 20  align="top">The 
9fc0: 66 69 72 73 74 20 66 6f 72 6d 20 72 65 74 75 72  first form retur
9fd0: 6e 20 61 20 63 6f 75 6e 74 20 6f 66 20 74 68 65  n a count of the
9fe0: 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73   number of times
9ff0: 0a 74 68 61 74 20 3c 69 3e 58 3c 2f 69 3e 20 69  .that <i>X</i> i
a000: 73 20 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20 61 20  s not NULL in a 
a010: 67 72 6f 75 70 2e 20 20 54 68 65 20 73 65 63 6f  group.  The seco
a020: 6e 64 20 66 6f 72 6d 20 28 77 69 74 68 20 6e 6f  nd form (with no
a030: 20 61 72 67 75 6d 65 6e 74 29 0a 72 65 74 75 72   argument).retur
a040: 6e 73 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d  ns the total num
a050: 62 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 20 74  ber of rows in t
a060: 68 65 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c  he group.</td>.<
a070: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
a080: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
a090: 6e 3d 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69  n="right">max(<i
a0a0: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
a0b0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
a0c0: 74 75 72 6e 20 74 68 65 20 6d 61 78 69 6d 75 6d  turn the maximum
a0d0: 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61   value of all va
a0e0: 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
a0f0: 70 2e 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72  p..The usual sor
a100: 74 20 6f 72 64 65 72 20 69 73 20 75 73 65 64 20  t order is used 
a110: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
a120: 20 6d 61 78 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c   maximum.</td>.<
a130: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
a140: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
a150: 6e 3d 22 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69  n="right">min(<i
a160: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
a170: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
a180: 74 75 72 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d  turn the minimum
a190: 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61   value of all va
a1a0: 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
a1b0: 70 2e 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72  p..The usual sor
a1c0: 74 20 6f 72 64 65 72 20 69 73 20 75 73 65 64 20  t order is used 
a1d0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
a1e0: 20 6d 69 6e 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c   minimum.</td>.<
a1f0: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
a200: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
a210: 6e 3d 22 72 69 67 68 74 22 3e 73 75 6d 28 3c 69  n="right">sum(<i
a220: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
a230: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
a240: 74 75 72 6e 20 74 68 65 20 6e 75 6d 65 72 69 63  turn the numeric
a250: 20 73 75 6d 20 6f 66 20 61 6c 6c 20 76 61 6c 75   sum of all valu
a260: 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  es in the group.
a270: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61  </td>.</tr>.</ta
a280: 62 6c 65 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  ble>.}...Section
a290: 20 49 4e 53 45 52 54 20 69 6e 73 65 72 74 0a 0a   INSERT insert..
a2a0: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
a2b0: 65 6d 65 6e 74 7d 20 7b 0a 49 4e 53 45 52 54 20  ement} {.INSERT 
a2c0: 5b 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c  [OR <conflict-al
a2d0: 67 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 5b  gorithm>] INTO [
a2e0: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
a2f0: 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  .] <table-name> 
a300: 5b 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29  [(<column-list>)
a310: 5d 20 56 41 4c 55 45 53 28 3c 76 61 6c 75 65 2d  ] VALUES(<value-
a320: 6c 69 73 74 3e 29 20 7c 0a 49 4e 53 45 52 54 20  list>) |.INSERT 
a330: 5b 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c  [OR <conflict-al
a340: 67 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 5b  gorithm>] INTO [
a350: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
a360: 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  .] <table-name> 
a370: 5b 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29  [(<column-list>)
a380: 5d 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d  ] <select-statem
a390: 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ent>.}..puts {.<
a3a0: 70 3e 54 68 65 20 49 4e 53 45 52 54 20 73 74 61  p>The INSERT sta
a3b0: 74 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69 6e 20  tement comes in 
a3c0: 74 77 6f 20 62 61 73 69 63 20 66 6f 72 6d 73 2e  two basic forms.
a3d0: 20 20 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d    The first form
a3e0: 0a 28 77 69 74 68 20 74 68 65 20 22 56 41 4c 55  .(with the "VALU
a3f0: 45 53 22 20 6b 65 79 77 6f 72 64 29 20 63 72 65  ES" keyword) cre
a400: 61 74 65 73 20 61 20 73 69 6e 67 6c 65 20 6e 65  ates a single ne
a410: 77 20 72 6f 77 20 69 6e 20 61 6e 20 65 78 69 73  w row in an exis
a420: 74 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66 20 6e  ting table..If n
a430: 6f 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 20 69 73  o column-list is
a440: 20 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20   specified then 
a450: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61  the number of va
a460: 6c 75 65 73 20 6d 75 73 74 0a 62 65 20 74 68 65  lues must.be the
a470: 20 73 61 6d 65 20 61 73 20 74 68 65 20 6e 75 6d   same as the num
a480: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
a490: 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20 49 66  n the table.  If
a4a0: 20 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69   a column-list.i
a4b0: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
a4c0: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
a4d0: 76 61 6c 75 65 73 20 6d 75 73 74 20 6d 61 74 63  values must matc
a4e0: 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a  h the number of.
a4f0: 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e  specified column
a500: 73 2e 20 20 43 6f 6c 75 6d 6e 73 20 6f 66 20 74  s.  Columns of t
a510: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 64 6f  he table that do
a520: 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74   not appear in t
a530: 68 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 61  he.column list a
a540: 72 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74  re filled with t
a550: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
a560: 2c 20 6f 72 20 77 69 74 68 20 4e 55 4c 4c 20 69  , or with NULL i
a570: 66 20 6e 6f 74 0a 64 65 66 61 75 6c 74 20 76 61  f not.default va
a580: 6c 75 65 20 69 73 20 73 70 65 63 69 66 69 65 64  lue is specified
a590: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73  ..</p>..<p>The s
a5a0: 65 63 6f 6e 64 20 66 6f 72 6d 20 6f 66 20 74 68  econd form of th
a5b0: 65 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  e INSERT stateme
a5c0: 6e 74 20 74 61 6b 65 73 20 69 74 20 64 61 74 61  nt takes it data
a5d0: 20 66 72 6f 6d 20 61 0a 53 45 4c 45 43 54 20 73   from a.SELECT s
a5e0: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e  tatement.  The n
a5f0: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
a600: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f   in the result o
a610: 66 20 74 68 65 0a 53 45 4c 45 43 54 20 6d 75 73  f the.SELECT mus
a620: 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20  t exactly match 
a630: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  the number of co
a640: 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62  lumns in the tab
a650: 6c 65 20 69 66 0a 6e 6f 20 63 6f 6c 75 6d 6e 20  le if.no column 
a660: 6c 69 73 74 20 69 73 20 73 70 65 63 69 66 69 65  list is specifie
a670: 64 2c 20 6f 72 20 69 74 20 6d 75 73 74 20 6d 61  d, or it must ma
a680: 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  tch the number o
a690: 66 20 63 6f 6c 75 6d 6e 73 0a 6e 61 6d 65 20 69  f columns.name i
a6a0: 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6c 69 73  n the column lis
a6b0: 74 2e 20 20 41 20 6e 65 77 20 65 6e 74 72 79 20  t.  A new entry 
a6c0: 69 73 20 6d 61 64 65 20 69 6e 20 74 68 65 20 74  is made in the t
a6d0: 61 62 6c 65 0a 66 6f 72 20 65 76 65 72 79 20 72  able.for every r
a6e0: 6f 77 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54  ow of the SELECT
a6f0: 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20 53 45   result.  The SE
a700: 4c 45 43 54 20 6d 61 79 20 62 65 20 73 69 6d 70  LECT may be simp
a710: 6c 65 0a 6f 72 20 63 6f 6d 70 6f 75 6e 64 2e 20  le.or compound. 
a720: 20 49 66 20 74 68 65 20 53 45 4c 45 43 54 20 73   If the SELECT s
a730: 74 61 74 65 6d 65 6e 74 20 68 61 73 20 61 6e 20  tatement has an 
a740: 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 2c  ORDER BY clause,
a750: 0a 74 68 65 20 4f 52 44 45 52 20 42 59 20 69 73  .the ORDER BY is
a760: 20 69 67 6e 6f 72 65 64 2e 3c 2f 70 3e 0a 0a 3c   ignored.</p>..<
a770: 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63  p>The optional c
a780: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61  onflict-clause a
a790: 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66  llows the specif
a7a0: 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c  ication of an al
a7b0: 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72  ternative.constr
a7c0: 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65  aint conflict re
a7d0: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
a7e0: 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e 67  hm to use during
a7f0: 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e   this one comman
a800: 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74 69  d..See the secti
a810: 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72 65  on titled.<a hre
a820: 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e  f="#conflict">ON
a830: 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f   CONFLICT</a> fo
a840: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
a850: 6f 72 6d 61 74 69 6f 6e 2e 0a 46 6f 72 20 63 6f  ormation..For co
a860: 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68  mpatibility with
a870: 20 4d 79 53 51 4c 2c 20 74 68 65 20 70 61 72 73   MySQL, the pars
a880: 65 72 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73  er allows the us
a890: 65 20 6f 66 20 74 68 65 0a 73 69 6e 67 6c 65 20  e of the.single 
a8a0: 6b 65 79 77 6f 72 64 20 3c 61 20 68 72 65 66 3d  keyword <a href=
a8b0: 22 23 72 65 70 6c 61 63 65 22 3e 52 45 50 4c 41  "#replace">REPLA
a8c0: 43 45 3c 2f 61 3e 20 61 73 20 61 6e 20 61 6c 69  CE</a> as an ali
a8d0: 61 73 20 66 6f 72 20 22 49 4e 53 45 52 54 20 4f  as for "INSERT O
a8e0: 52 20 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e  R REPLACE"..</p>
a8f0: 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e  .}...Section {ON
a900: 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65   CONFLICT clause
a910: 7d 20 63 6f 6e 66 6c 69 63 74 0a 0a 53 79 6e 74  } conflict..Synt
a920: 61 78 20 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c 61  ax {conflict-cla
a930: 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49  use} {.ON CONFLI
a940: 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67  CT <conflict-alg
a950: 6f 72 69 74 68 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c  orithm>.} {confl
a960: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 7d 20 7b  ict-algorithm} {
a970: 0a 52 4f 4c 4c 42 41 43 4b 20 7c 20 41 42 4f 52  .ROLLBACK | ABOR
a980: 54 20 7c 20 46 41 49 4c 20 7c 20 49 47 4e 4f 52  T | FAIL | IGNOR
a990: 45 20 7c 20 52 45 50 4c 41 43 45 0a 7d 0a 0a 70  E | REPLACE.}..p
a9a0: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 4f 4e 20  uts {.<p>The ON 
a9b0: 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
a9c0: 69 73 20 6e 6f 74 20 61 20 73 65 70 61 72 61 74  is not a separat
a9d0: 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20  e SQL command.  
a9e0: 49 74 20 69 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e  It is a.non-stan
a9f0: 64 61 72 64 20 63 6c 61 75 73 65 20 74 68 61 74  dard clause that
aa00: 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e 20 6d   can appear in m
aa10: 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 20 63 6f  any other SQL co
aa20: 6d 6d 61 6e 64 73 2e 0a 49 74 20 69 73 20 67 69  mmands..It is gi
aa30: 76 65 6e 20 69 74 73 20 6f 77 6e 20 73 65 63 74  ven its own sect
aa40: 69 6f 6e 20 69 6e 20 74 68 69 73 20 64 6f 63 75  ion in this docu
aa50: 6d 65 6e 74 20 62 65 63 61 75 73 65 20 69 74 20  ment because it 
aa60: 69 73 20 6e 6f 74 0a 70 61 72 74 20 6f 66 20 73  is not.part of s
aa70: 74 61 6e 64 61 72 64 20 53 51 4c 20 61 6e 64 20  tandard SQL and 
aa80: 74 68 65 72 65 66 6f 72 65 20 6d 69 67 68 74 20  therefore might 
aa90: 6e 6f 74 20 62 65 20 66 61 6d 69 6c 69 61 72 2e  not be familiar.
aaa0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 79 6e  </p>..<p>The syn
aab0: 74 61 78 20 66 6f 72 20 74 68 65 20 4f 4e 20 43  tax for the ON C
aac0: 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69  ONFLICT clause i
aad0: 73 20 61 73 20 73 68 6f 77 6e 20 61 62 6f 76 65  s as shown above
aae0: 20 66 6f 72 0a 74 68 65 20 43 52 45 41 54 45 20   for.the CREATE 
aaf0: 54 41 42 4c 45 20 61 6e 64 20 43 52 45 41 54 45  TABLE and CREATE
ab00: 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e 64 73 2e   INDEX commands.
ab10: 20 20 46 6f 72 20 74 68 65 20 43 4f 50 59 2c 20    For the COPY, 
ab20: 49 4e 53 45 52 54 2c 20 61 6e 64 0a 55 50 44 41  INSERT, and.UPDA
ab30: 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20 74 68 65  TE commands, the
ab40: 20 6b 65 79 77 6f 72 64 73 20 22 4f 4e 20 43 4f   keywords "ON CO
ab50: 4e 46 4c 49 43 54 22 20 61 72 65 20 72 65 70 6c  NFLICT" are repl
ab60: 61 63 65 64 20 62 79 20 22 4f 52 22 2c 20 74 6f  aced by "OR", to
ab70: 20 6d 61 6b 65 0a 74 68 65 20 73 79 6e 74 61 78   make.the syntax
ab80: 20 73 65 65 6d 20 6d 6f 72 65 20 6e 61 74 75 72   seem more natur
ab90: 61 6c 2e 20 20 42 75 74 20 74 68 65 20 6d 65 61  al.  But the mea
aba0: 6e 69 6e 67 20 6f 66 20 74 68 65 20 63 6c 61 75  ning of the clau
abb0: 73 65 20 69 73 20 74 68 65 20 73 61 6d 65 0a 65  se is the same.e
abc0: 69 74 68 65 72 20 77 61 79 2e 3c 2f 70 3e 0a 0a  ither way.</p>..
abd0: 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e 46 4c 49  <p>The ON CONFLI
abe0: 43 54 20 63 6c 61 75 73 65 20 73 70 65 63 69 66  CT clause specif
abf0: 69 65 73 20 61 6e 20 61 6c 67 6f 72 69 74 68 6d  ies an algorithm
ac00: 20 75 73 65 64 20 74 6f 20 72 65 73 6f 6c 76 65   used to resolve
ac10: 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63 6f 6e 66  .constraint conf
ac20: 6c 69 63 74 73 2e 20 20 54 68 65 72 65 20 61 72  licts.  There ar
ac30: 65 20 66 69 76 65 20 63 68 6f 69 63 65 73 3a 20  e five choices: 
ac40: 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f 52 54 2c  ROLLBACK, ABORT,
ac50: 0a 46 41 49 4c 2c 20 49 47 4e 4f 52 45 2c 20 61  .FAIL, IGNORE, a
ac60: 6e 64 20 52 45 50 4c 41 43 45 2e 20 54 68 65 20  nd REPLACE. The 
ac70: 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68  default algorith
ac80: 6d 20 69 73 20 41 42 4f 52 54 2e 20 20 54 68 69  m is ABORT.  Thi
ac90: 73 0a 69 73 20 77 68 61 74 20 74 68 65 79 20 6d  s.is what they m
aca0: 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c 3e 0a 3c  ean:</p>..<dl>.<
acb0: 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43 4b 3c 2f  dt><b>ROLLBACK</
acc0: 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
acd0: 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
ace0: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
acf0: 73 2c 20 61 6e 20 69 6d 6d 65 64 69 61 74 65 20  s, an immediate 
ad00: 52 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75 72 73 2c  ROLLBACK.occurs,
ad10: 20 74 68 75 73 20 65 6e 64 69 6e 67 20 74 68 65   thus ending the
ad20: 20 63 75 72 72 65 6e 74 20 74 72 61 6e 73 61 63   current transac
ad30: 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65 20 63 6f  tion, and the co
ad40: 6d 6d 61 6e 64 20 61 62 6f 72 74 73 0a 77 69 74  mmand aborts.wit
ad50: 68 20 61 20 72 65 74 75 72 6e 20 63 6f 64 65 20  h a return code 
ad60: 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52  of SQLITE_CONSTR
ad70: 41 49 4e 54 2e 20 20 49 66 20 6e 6f 20 74 72 61  AINT.  If no tra
ad80: 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61 63 74 69  nsaction is.acti
ad90: 76 65 20 28 6f 74 68 65 72 20 74 68 61 6e 20 74  ve (other than t
ada0: 68 65 20 69 6d 70 6c 69 65 64 20 74 72 61 6e 73  he implied trans
adb0: 61 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 63  action that is c
adc0: 72 65 61 74 65 64 20 6f 6e 20 65 76 65 72 79 0a  reated on every.
add0: 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e 20 74 68  command) then th
ade0: 69 73 20 61 6c 67 6f 72 69 74 68 6d 20 77 6f 72  is algorithm wor
adf0: 6b 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 41  ks the same as A
ae00: 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  BORT.</p></dd>..
ae10: 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c 2f 62 3e  <dt><b>ABORT</b>
ae20: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
ae30: 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76  n a constraint v
ae40: 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c  iolation occurs,
ae50: 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 62 61 63   the command bac
ae60: 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72 69 6f 72  ks out.any prior
ae70: 20 63 68 61 6e 67 65 73 20 69 74 20 6d 69 67 68   changes it migh
ae80: 74 20 68 61 76 65 20 6d 61 64 65 20 61 6e 64 20  t have made and 
ae90: 61 62 6f 72 74 73 20 77 69 74 68 20 61 20 72 65  aborts with a re
aea0: 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20 53 51 4c  turn code.of SQL
aeb0: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 2e 20  ITE_CONSTRAINT. 
aec0: 20 42 75 74 20 6e 6f 20 52 4f 4c 4c 42 41 43 4b   But no ROLLBACK
aed0: 20 69 73 20 65 78 65 63 75 74 65 64 20 73 6f 20   is executed so 
aee0: 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20 70 72 69  changes.from pri
aef0: 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68  or commands with
af00: 69 6e 20 74 68 65 20 73 61 6d 65 20 74 72 61 6e  in the same tran
af10: 73 61 63 74 69 6f 6e 0a 61 72 65 20 70 72 65 73  saction.are pres
af20: 65 72 76 65 64 2e 20 20 54 68 69 73 20 69 73 20  erved.  This is 
af30: 74 68 65 20 64 65 66 61 75 6c 74 20 62 65 68 61  the default beha
af40: 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  vior.</p></dd>..
af50: 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f 62 3e 3c  <dt><b>FAIL</b><
af60: 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e  /dt>.<dd><p>When
af70: 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69   a constraint vi
af80: 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73 2c 20  olation occurs, 
af90: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72  the command abor
afa0: 74 73 20 77 69 74 68 20 61 0a 72 65 74 75 72 6e  ts with a.return
afb0: 20 63 6f 64 65 20 53 51 4c 49 54 45 5f 43 4f 4e   code SQLITE_CON
afc0: 53 54 52 41 49 4e 54 2e 20 20 42 75 74 20 61 6e  STRAINT.  But an
afd0: 79 20 63 68 61 6e 67 65 73 20 74 6f 20 74 68 65  y changes to the
afe0: 20 64 61 74 61 62 61 73 65 20 74 68 61 74 0a 74   database that.t
aff0: 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61 64 65 20  he command made 
b000: 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f 75 6e 74  prior to encount
b010: 65 72 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72  ering the constr
b020: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 0a 61  aint violation.a
b030: 72 65 20 70 72 65 73 65 72 76 65 64 20 61 6e 64  re preserved and
b040: 20 61 72 65 20 6e 6f 74 20 62 61 63 6b 65 64 20   are not backed 
b050: 6f 75 74 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c  out.  For exampl
b060: 65 2c 20 69 66 20 61 6e 20 55 50 44 41 54 45 0a  e, if an UPDATE.
b070: 73 74 61 74 65 6d 65 6e 74 20 65 6e 63 6f 75 6e  statement encoun
b080: 74 65 72 65 64 20 61 20 63 6f 6e 73 74 72 61 69  tered a constrai
b090: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 6e 20  nt violation on 
b0a0: 74 68 65 20 31 30 30 74 68 20 72 6f 77 20 74 68  the 100th row th
b0b0: 61 74 0a 69 74 20 61 74 74 65 6d 70 74 73 20 74  at.it attempts t
b0c0: 6f 20 75 70 64 61 74 65 2c 20 74 68 65 6e 20 74  o update, then t
b0d0: 68 65 20 66 69 72 73 74 20 39 39 20 72 6f 77 20  he first 99 row 
b0e0: 63 68 61 6e 67 65 73 20 61 72 65 20 70 72 65 73  changes are pres
b0f0: 65 72 76 65 64 0a 62 75 74 20 63 68 61 6e 67 65  erved.but change
b100: 73 20 74 6f 20 72 6f 77 73 20 31 30 30 20 61 6e  s to rows 100 an
b110: 64 20 62 65 79 6f 6e 64 20 6e 65 76 65 72 20 6f  d beyond never o
b120: 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a  ccur.</p></dd>..
b130: 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45 3c 2f 62  <dt><b>IGNORE</b
b140: 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68  ></dt>.<dd><p>Wh
b150: 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 20  en a constraint 
b160: 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72 73  violation occurs
b170: 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77 20 74 68  , the one row th
b180: 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74 68 65 20  at contains.the 
b190: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
b1a0: 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69 6e 73 65  tion is not inse
b1b0: 72 74 65 64 20 6f 72 20 63 68 61 6e 67 65 64 2e  rted or changed.
b1c0: 20 20 42 75 74 20 74 68 65 20 63 6f 6d 6d 61 6e    But the comman
b1d0: 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65 78 65 63  d.continues exec
b1e0: 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c 79 2e 20  uting normally. 
b1f0: 20 4f 74 68 65 72 20 72 6f 77 73 20 62 65 66 6f   Other rows befo
b200: 72 65 20 61 6e 64 20 61 66 74 65 72 20 74 68 65  re and after the
b210: 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e 74 61 69   row that.contai
b220: 6e 65 64 20 74 68 65 20 63 6f 6e 73 74 72 61 69  ned the constrai
b230: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 63 6f 6e  nt violation con
b240: 74 69 6e 75 65 20 74 6f 20 62 65 20 69 6e 73 65  tinue to be inse
b250: 72 74 65 64 20 6f 72 20 75 70 64 61 74 65 64 0a  rted or updated.
b260: 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72  normally.  No er
b270: 72 6f 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e  ror is returned.
b280: 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64 74 3e 3c  </p></dd>..<dt><
b290: 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e 3c 2f 64  b>REPLACE</b></d
b2a0: 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65 6e 20 61  t>.<dd><p>When a
b2b0: 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61 69   UNIQUE constrai
b2c0: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
b2d0: 75 72 73 2c 20 74 68 65 20 70 72 65 2d 65 78 69  urs, the pre-exi
b2e0: 73 74 69 6e 67 20 72 6f 77 73 0a 74 68 61 74 20  sting rows.that 
b2f0: 61 72 65 20 63 61 75 73 69 6e 67 20 74 68 65 20  are causing the 
b300: 63 6f 6e 73 74 72 61 69 6e 74 20 76 69 6f 6c 61  constraint viola
b310: 74 69 6f 6e 20 61 72 65 20 72 65 6d 6f 76 65 64  tion are removed
b320: 20 70 72 69 6f 72 20 74 6f 20 69 6e 73 65 72 74   prior to insert
b330: 69 6e 67 0a 6f 72 20 75 70 64 61 74 69 6e 67 20  ing.or updating 
b340: 74 68 65 20 63 75 72 72 65 6e 74 20 72 6f 77 2e  the current row.
b350: 20 20 54 68 75 73 20 74 68 65 20 69 6e 73 65 72    Thus the inser
b360: 74 20 6f 72 20 75 70 64 61 74 65 20 61 6c 77 61  t or update alwa
b370: 79 73 20 6f 63 63 75 72 73 2e 0a 54 68 65 20 63  ys occurs..The c
b380: 6f 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e 75 65 73  ommand continues
b390: 20 65 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61   executing norma
b3a0: 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f 72 20 69  lly.  No error i
b3b0: 73 20 72 65 74 75 72 6e 65 64 2e 0a 49 66 20 61  s returned..If a
b3c0: 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e 73 74 72   NOT NULL constr
b3d0: 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f  aint violation o
b3e0: 63 63 75 72 73 2c 20 74 68 65 20 4e 55 4c 4c 20  ccurs, the NULL 
b3f0: 76 61 6c 75 65 20 69 73 20 72 65 70 6c 61 63 65  value is replace
b400: 64 0a 62 79 20 74 68 65 20 64 65 66 61 75 6c 74  d.by the default
b410: 20 76 61 6c 75 65 20 66 6f 72 20 74 68 61 74 20   value for that 
b420: 63 6f 6c 75 6d 6e 2e 20 20 49 66 20 74 68 65 20  column.  If the 
b430: 63 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f 20 64 65  column has no de
b440: 66 61 75 6c 74 0a 76 61 6c 75 65 2c 20 74 68 65  fault.value, the
b450: 6e 20 74 68 65 20 41 42 4f 52 54 20 61 6c 67 6f  n the ABORT algo
b460: 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e 3c 2f  rithm is used.</
b470: 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 69 73  p>..<p>When this
b480: 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75   conflict resolu
b490: 74 69 6f 6e 20 73 74 72 61 74 65 67 79 20 64 65  tion strategy de
b4a0: 6c 65 74 65 73 20 72 6f 77 73 20 69 6e 20 6f 72  letes rows in or
b4b0: 64 65 72 20 74 6f 0a 73 74 61 74 69 73 66 79 20  der to.statisfy 
b4c0: 61 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 69 74  a constraint, it
b4d0: 20 64 6f 65 73 20 6e 6f 74 20 69 6e 76 6f 6b 65   does not invoke
b4e0: 20 64 65 6c 65 74 65 20 74 72 69 67 67 65 72 73   delete triggers
b4f0: 20 6f 6e 20 74 68 6f 73 65 0a 72 6f 77 73 2e 20   on those.rows. 
b500: 20 42 75 74 20 74 68 61 74 20 6d 61 79 20 63 68   But that may ch
b510: 61 6e 67 65 20 69 6e 20 61 20 66 75 74 75 72 65  ange in a future
b520: 20 72 65 6c 65 61 73 65 2e 3c 2f 70 3e 0a 0a 3c   release.</p>..<
b530: 70 3e 54 68 65 20 61 6c 67 6f 72 69 74 68 6d 20  p>The algorithm 
b540: 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65  specified in the
b550: 20 4f 52 20 63 6c 61 75 73 65 20 6f 66 20 61 20   OR clause of a 
b560: 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 6f 72  COPY, INSERT, or
b570: 20 55 50 44 41 54 45 0a 6f 76 65 72 72 69 64 65   UPDATE.override
b580: 73 20 61 6e 79 20 61 6c 67 6f 72 69 74 68 6d 20  s any algorithm 
b590: 73 70 65 63 69 66 69 65 64 20 69 6e 20 61 20 43  specified in a C
b5a0: 52 45 41 54 45 20 54 41 42 4c 45 20 6f 72 20 43  REATE TABLE or C
b5b0: 52 45 41 54 45 20 49 4e 44 45 58 2e 0a 49 66 20  REATE INDEX..If 
b5c0: 6e 6f 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  no algorithm is 
b5d0: 73 70 65 63 69 66 69 65 64 20 61 6e 79 77 68 65  specified anywhe
b5e0: 72 65 2c 20 74 68 65 20 41 42 4f 52 54 20 61 6c  re, the ABORT al
b5f0: 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 2e  gorithm is used.
b600: 3c 2f 70 3e 0a 0a 7d 0a 23 20 3c 70 3e 46 6f 72  </p>..}.# <p>For
b610: 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f   additional info
b620: 72 6d 61 74 69 6f 6e 2c 20 73 65 65 20 0a 23 20  rmation, see .# 
b630: 3c 61 20 68 72 65 66 3d 22 63 6f 6e 66 6c 69 63  <a href="conflic
b640: 74 2e 68 74 6d 6c 22 3e 63 6f 6e 66 6c 69 63 74  t.html">conflict
b650: 2e 68 74 6d 6c 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a  .html</a>.</p>..
b660: 0a 53 65 63 74 69 6f 6e 20 50 52 41 47 4d 41 20  .Section PRAGMA 
b670: 70 72 61 67 6d 61 0a 0a 53 79 6e 74 61 78 20 7b  pragma..Syntax {
b680: 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b  sql-statement} {
b690: 0a 50 52 41 47 4d 41 20 3c 6e 61 6d 65 3e 20 5b  .PRAGMA <name> [
b6a0: 3d 20 3c 76 61 6c 75 65 3e 5d 20 7c 0a 50 52 41  = <value>] |.PRA
b6b0: 47 4d 41 20 3c 66 75 6e 63 74 69 6f 6e 3e 28 3c  GMA <function>(<
b6c0: 61 72 67 3e 29 0a 7d 0a 0a 70 75 74 73 20 7b 0a  arg>).}..puts {.
b6d0: 3c 70 3e 54 68 65 20 50 52 41 47 4d 41 20 63 6f  <p>The PRAGMA co
b6e0: 6d 6d 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f  mmand is used to
b6f0: 20 6d 6f 64 69 66 79 20 74 68 65 20 6f 70 65 72   modify the oper
b700: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 51 4c  ation of the SQL
b710: 69 74 65 20 6c 69 62 72 61 72 79 2e 0a 54 68 65  ite library..The
b720: 20 70 72 61 67 6d 61 20 63 6f 6d 6d 61 6e 64 20   pragma command 
b730: 69 73 20 65 78 70 65 72 69 6d 65 6e 74 61 6c 20  is experimental 
b740: 61 6e 64 20 73 70 65 63 69 66 69 63 20 70 72 61  and specific pra
b750: 67 6d 61 20 73 74 61 74 65 6d 65 6e 74 73 20 6d  gma statements m
b760: 61 79 20 62 65 0a 72 65 6d 6f 76 65 64 20 6f 72  ay be.removed or
b770: 20 61 64 64 65 64 20 69 6e 20 66 75 74 75 72 65   added in future
b780: 20 72 65 6c 65 61 73 65 73 20 6f 66 20 53 51 4c   releases of SQL
b790: 69 74 65 2e 20 20 55 73 65 20 74 68 69 73 20 63  ite.  Use this c
b7a0: 6f 6d 6d 61 6e 64 0a 77 69 74 68 20 63 61 75 74  ommand.with caut
b7b0: 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ion.</p>..<p>The
b7c0: 20 70 72 61 67 6d 61 73 20 74 68 61 74 20 74 61   pragmas that ta
b7d0: 6b 65 20 61 6e 20 69 6e 74 65 67 65 72 20 3c 62  ke an integer <b
b7e0: 3e 3c 69 3e 76 61 6c 75 65 3c 2f 69 3e 3c 2f 62  ><i>value</i></b
b7f0: 3e 20 61 6c 73 6f 20 61 63 63 65 70 74 20 0a 73  > also accept .s
b800: 79 6d 62 6f 6c 69 63 20 6e 61 6d 65 73 2e 20 20  ymbolic names.  
b810: 54 68 65 20 73 74 72 69 6e 67 73 20 22 3c 62 3e  The strings "<b>
b820: 6f 6e 3c 2f 62 3e 22 2c 20 22 3c 62 3e 74 72 75  on</b>", "<b>tru
b830: 65 3c 2f 62 3e 22 2c 20 61 6e 64 20 22 3c 62 3e  e</b>", and "<b>
b840: 79 65 73 3c 2f 62 3e 22 20 0a 61 72 65 20 65 71  yes</b>" .are eq
b850: 75 69 76 61 6c 65 6e 74 20 74 6f 20 3c 62 3e 31  uivalent to <b>1
b860: 3c 2f 62 3e 2e 20 20 54 68 65 20 73 74 72 69 6e  </b>.  The strin
b870: 67 73 20 22 3c 62 3e 6f 66 66 3c 2f 62 3e 22 2c  gs "<b>off</b>",
b880: 20 22 3c 62 3e 66 61 6c 73 65 3c 2f 62 3e 22 2c   "<b>false</b>",
b890: 20 0a 61 6e 64 20 22 3c 62 3e 6e 6f 3c 2f 62 3e   .and "<b>no</b>
b8a0: 22 20 61 72 65 20 65 71 75 69 76 61 6c 65 6e 74  " are equivalent
b8b0: 20 74 6f 20 3c 62 3e 30 3c 2f 62 3e 2e 20 20 54   to <b>0</b>.  T
b8c0: 68 65 73 65 20 73 74 72 69 6e 67 73 20 61 72 65  hese strings are
b8d0: 20 63 61 73 65 2d 0a 69 6e 73 65 6e 73 69 74 69   case-.insensiti
b8e0: 76 65 2c 20 61 6e 64 20 64 6f 20 6e 6f 74 20 72  ve, and do not r
b8f0: 65 71 75 69 72 65 20 71 75 6f 74 65 73 2e 20 20  equire quotes.  
b900: 41 6e 20 75 6e 72 65 63 6f 67 6e 69 7a 65 64 20  An unrecognized 
b910: 73 74 72 69 6e 67 20 77 69 6c 6c 20 62 65 20 0a  string will be .
b920: 74 72 65 61 74 65 64 20 61 73 20 3c 62 3e 31 3c  treated as <b>1<
b930: 2f 62 3e 2c 20 61 6e 64 20 77 69 6c 6c 20 6e 6f  /b>, and will no
b940: 74 20 67 65 6e 65 72 61 74 65 20 61 6e 20 65 72  t generate an er
b950: 72 6f 72 2e 20 20 57 68 65 6e 20 74 68 65 20 3c  ror.  When the <
b960: 69 3e 76 61 6c 75 65 3c 2f 69 3e 20 0a 69 73 20  i>value</i> .is 
b970: 72 65 74 75 72 6e 65 64 20 69 74 20 69 73 20 61  returned it is a
b980: 73 20 61 6e 20 69 6e 74 65 67 65 72 2e 3c 2f 70  s an integer.</p
b990: 3e 0a 0a 3c 70 3e 54 68 65 20 63 75 72 72 65 6e  >..<p>The curren
b9a0: 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e  t implementation
b9b0: 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 66 6f   supports the fo
b9c0: 6c 6c 6f 77 69 6e 67 20 70 72 61 67 6d 61 73 3a  llowing pragmas:
b9d0: 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 61 20 6e 61  </p>..<ul>.<a na
b9e0: 6d 65 3d 22 70 72 61 67 6d 61 5f 63 61 63 68 65  me="pragma_cache
b9f0: 5f 73 69 7a 65 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e  _size"></a>.<li>
ba00: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 63 61 63  <p><b>PRAGMA cac
ba10: 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 20 20 20  he_size;.       
ba20: 3c 62 72 3e 50 52 41 47 4d 41 20 63 61 63 68 65  <br>PRAGMA cache
ba30: 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e 3c 69 3e 4e  _size = </b><i>N
ba40: 75 6d 62 65 72 2d 6f 66 2d 70 61 67 65 73 3c 2f  umber-of-pages</
ba50: 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20  i><b>;</b></p>. 
ba60: 20 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63     <p>Query or c
ba70: 68 61 6e 67 65 20 74 68 65 20 6d 61 78 69 6d 75  hange the maximu
ba80: 6d 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 74 61  m number of data
ba90: 62 61 73 65 20 64 69 73 6b 20 70 61 67 65 73 20  base disk pages 
baa0: 74 68 61 74 20 53 51 4c 69 74 65 0a 20 20 20 20  that SQLite.    
bab0: 77 69 6c 6c 20 68 6f 6c 64 20 69 6e 20 6d 65 6d  will hold in mem
bac0: 6f 72 79 20 61 74 20 6f 6e 63 65 2e 20 20 45 61  ory at once.  Ea
bad0: 63 68 20 70 61 67 65 20 75 73 65 73 20 61 62 6f  ch page uses abo
bae0: 75 74 20 31 2e 35 4b 20 6f 66 20 6d 65 6d 6f 72  ut 1.5K of memor
baf0: 79 2e 0a 20 20 20 20 54 68 65 20 64 65 66 61 75  y..    The defau
bb00: 6c 74 20 63 61 63 68 65 20 73 69 7a 65 20 69 73  lt cache size is
bb10: 20 32 30 30 30 2e 20 20 49 66 20 79 6f 75 20 61   2000.  If you a
bb20: 72 65 20 64 6f 69 6e 67 20 55 50 44 41 54 45 73  re doing UPDATEs
bb30: 20 6f 72 20 44 45 4c 45 54 45 73 0a 20 20 20 20   or DELETEs.    
bb40: 74 68 61 74 20 63 68 61 6e 67 65 20 6d 61 6e 79  that change many
bb50: 20 72 6f 77 73 20 6f 66 20 61 20 64 61 74 61 62   rows of a datab
bb60: 61 73 65 20 61 6e 64 20 79 6f 75 20 64 6f 20 6e  ase and you do n
bb70: 6f 74 20 6d 69 6e 64 20 69 66 20 53 51 4c 69 74  ot mind if SQLit
bb80: 65 0a 20 20 20 20 75 73 65 73 20 6d 6f 72 65 20  e.    uses more 
bb90: 6d 65 6d 6f 72 79 2c 20 79 6f 75 20 63 61 6e 20  memory, you can 
bba0: 69 6e 63 72 65 61 73 65 20 74 68 65 20 63 61 63  increase the cac
bbb0: 68 65 20 73 69 7a 65 20 66 6f 72 20 61 20 70 6f  he size for a po
bbc0: 73 73 69 62 6c 65 20 73 70 65 65 64 0a 20 20 20  ssible speed.   
bbd0: 20 69 6d 70 72 6f 76 65 6d 65 6e 74 2e 3c 2f 70   improvement.</p
bbe0: 3e 0a 20 20 20 20 3c 70 3e 57 68 65 6e 20 79 6f  >.    <p>When yo
bbf0: 75 20 63 68 61 6e 67 65 20 74 68 65 20 63 61 63  u change the cac
bc00: 68 65 20 73 69 7a 65 20 75 73 69 6e 67 20 74 68  he size using th
bc10: 65 20 63 61 63 68 65 5f 73 69 7a 65 20 70 72 61  e cache_size pra
bc20: 67 6d 61 2c 20 74 68 65 0a 20 20 20 20 63 68 61  gma, the.    cha
bc30: 6e 67 65 20 6f 6e 6c 79 20 65 6e 64 75 72 65 73  nge only endures
bc40: 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
bc50: 20 73 65 73 73 69 6f 6e 2e 20 20 54 68 65 20 63   session.  The c
bc60: 61 63 68 65 20 73 69 7a 65 20 72 65 76 65 72 74  ache size revert
bc70: 73 0a 20 20 20 20 74 6f 20 74 68 65 20 64 65 66  s.    to the def
bc80: 61 75 6c 74 20 76 61 6c 75 65 20 77 68 65 6e 20  ault value when 
bc90: 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73 20  the database is 
bca0: 63 6c 6f 73 65 64 20 61 6e 64 20 72 65 6f 70 65  closed and reope
bcb0: 6e 65 64 2e 20 20 55 73 65 0a 20 20 20 20 74 68  ned.  Use.    th
bcc0: 65 20 3c 61 20 68 72 65 66 3d 22 23 70 72 61 67  e <a href="#prag
bcd0: 6d 61 5f 64 65 66 61 75 6c 74 5f 63 61 63 68 65  ma_default_cache
bce0: 5f 73 69 7a 65 22 3e 3c 62 3e 64 65 66 61 75 6c  _size"><b>defaul
bcf0: 74 5f 63 61 63 68 65 5f 73 69 7a 65 3c 2f 62 3e  t_cache_size</b>
bd00: 3c 2f 61 3e 20 0a 20 20 20 20 70 72 61 67 6d 61  </a> .    pragma
bd10: 20 74 6f 20 63 68 65 63 6b 20 74 68 65 20 63 61   to check the ca
bd20: 63 68 65 20 73 69 7a 65 20 70 65 72 6d 61 6e 65  che size permane
bd30: 6e 74 6c 79 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a  ntly.</p></li>..
bd40: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
bd50: 20 64 61 74 61 62 61 73 65 5f 6c 69 73 74 3b 3c   database_list;<
bd60: 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 46  /b></p>.    <p>F
bd70: 6f 72 20 65 61 63 68 20 6f 70 65 6e 20 64 61 74  or each open dat
bd80: 61 62 61 73 65 2c 20 69 6e 76 6f 6b 65 20 74 68  abase, invoke th
bd90: 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
bda0: 69 6f 6e 20 6f 6e 63 65 20 77 69 74 68 0a 20 20  ion once with.  
bdb0: 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62    information ab
bdc0: 6f 75 74 20 74 68 61 74 20 64 61 74 61 62 61 73  out that databas
bdd0: 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 20 69 6e  e.  Arguments in
bde0: 63 6c 75 64 65 20 74 68 65 20 69 6e 64 65 78 20  clude the index 
bdf0: 61 6e 64 20 0a 20 20 20 20 74 68 65 20 6e 61 6d  and .    the nam
be00: 65 20 74 68 65 20 64 61 74 62 61 73 65 20 77 61  e the datbase wa
be10: 73 20 61 74 74 61 63 68 65 64 20 77 69 74 68 2e  s attached with.
be20: 20 20 54 68 65 20 66 69 72 73 74 20 72 6f 77 20    The first row 
be30: 77 69 6c 6c 20 62 65 20 66 6f 72 20 0a 20 20 20  will be for .   
be40: 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61 62 61   the main databa
be50: 73 65 2e 20 20 54 68 65 20 73 65 63 6f 6e 64 20  se.  The second 
be60: 72 6f 77 20 77 69 6c 6c 20 62 65 20 66 6f 72 20  row will be for 
be70: 74 68 65 20 64 61 74 61 62 61 73 65 20 75 73 65  the database use
be80: 64 20 74 6f 20 0a 20 20 20 20 73 74 6f 72 65 20  d to .    store 
be90: 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 73  temporary tables
bea0: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e  .</p></li>..<a n
beb0: 61 6d 65 3d 22 70 72 61 67 6d 61 5f 64 65 66 61  ame="pragma_defa
bec0: 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 22 3e  ult_cache_size">
bed0: 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  </a>.<li><p><b>P
bee0: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 63 61  RAGMA default_ca
bef0: 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20 20 20  che_size;.      
bf00: 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61   <br>PRAGMA defa
bf10: 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65 20 3d  ult_cache_size =
bf20: 20 3c 2f 62 3e 3c 69 3e 4e 75 6d 62 65 72 2d 6f   </b><i>Number-o
bf30: 66 2d 70 61 67 65 73 3c 2f 69 3e 3c 62 3e 3b 3c  f-pages</i><b>;<
bf40: 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51  /b></p>.    <p>Q
bf50: 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74  uery or change t
bf60: 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65  he maximum numbe
bf70: 72 20 6f 66 20 64 61 74 61 62 61 73 65 20 64 69  r of database di
bf80: 73 6b 20 70 61 67 65 73 20 74 68 61 74 20 53 51  sk pages that SQ
bf90: 4c 69 74 65 0a 20 20 20 20 77 69 6c 6c 20 68 6f  Lite.    will ho
bfa0: 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20 61 74 20  ld in memory at 
bfb0: 6f 6e 63 65 2e 20 20 45 61 63 68 20 70 61 67 65  once.  Each page
bfc0: 20 75 73 65 73 20 31 4b 20 6f 6e 20 64 69 73 6b   uses 1K on disk
bfd0: 20 61 6e 64 20 61 62 6f 75 74 20 31 2e 35 4b 20   and about 1.5K 
bfe0: 69 6e 20 6d 65 6d 6f 72 79 2e 0a 20 20 20 20 54  in memory..    T
bff0: 68 69 73 20 70 72 61 67 6d 61 20 77 6f 72 6b 73  his pragma works
c000: 20 6c 69 6b 65 20 74 68 65 20 3c 61 20 68 72 65   like the <a hre
c010: 66 3d 22 23 70 72 61 67 6d 61 5f 63 61 63 68 65  f="#pragma_cache
c020: 5f 73 69 7a 65 22 3e 3c 62 3e 63 61 63 68 65 5f  _size"><b>cache_
c030: 73 69 7a 65 3c 2f 62 3e 3c 2f 61 3e 20 0a 20 20  size</b></a> .  
c040: 20 20 70 72 61 67 6d 61 20 77 69 74 68 20 74 68    pragma with th
c050: 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a 20 20 20  e additional.   
c060: 20 66 65 61 74 75 72 65 20 74 68 61 74 20 69 74   feature that it
c070: 20 63 68 61 6e 67 65 73 20 74 68 65 20 63 61 63   changes the cac
c080: 68 65 20 73 69 7a 65 20 70 65 72 73 69 73 74 65  he size persiste
c090: 6e 74 6c 79 2e 20 20 57 69 74 68 20 74 68 69 73  ntly.  With this
c0a0: 20 70 72 61 67 6d 61 2c 0a 20 20 20 20 79 6f 75   pragma,.    you
c0b0: 20 63 61 6e 20 73 65 74 20 74 68 65 20 63 61 63   can set the cac
c0c0: 68 65 20 73 69 7a 65 20 6f 6e 63 65 20 61 6e 64  he size once and
c0d0: 20 74 68 61 74 20 73 65 74 74 69 6e 67 20 69 73   that setting is
c0e0: 20 72 65 74 61 69 6e 65 64 20 61 6e 64 20 72 65   retained and re
c0f0: 75 73 65 64 0a 20 20 20 20 65 76 65 72 79 74 69  used.    everyti
c100: 6d 65 20 79 6f 75 20 72 65 6f 70 65 6e 20 74 68  me you reopen th
c110: 65 20 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 3c  e database.</p><
c120: 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70  /li>..<a name="p
c130: 72 61 67 6d 61 5f 64 65 66 61 75 6c 74 5f 73 79  ragma_default_sy
c140: 6e 63 68 72 6f 6e 6f 75 73 22 3e 3c 2f 61 3e 0a  nchronous"></a>.
c150: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
c160: 20 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f   default_synchro
c170: 6e 6f 75 73 3b 0a 20 20 20 20 20 20 20 3c 62 72  nous;.       <br
c180: 3e 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f  >PRAGMA default_
c190: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 46 55  synchronous = FU
c1a0: 4c 4c 3b 20 3c 2f 62 3e 28 32 29 3c 62 3e 0a 20  LL; </b>(2)<b>. 
c1b0: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
c1c0: 20 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f   default_synchro
c1d0: 6e 6f 75 73 20 3d 20 4e 4f 52 4d 41 4c 3b 20 3c  nous = NORMAL; <
c1e0: 2f 62 3e 28 31 29 3c 62 3e 0a 20 20 20 20 20 20  /b>(1)<b>.      
c1f0: 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61   <br>PRAGMA defa
c200: 75 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 20  ult_synchronous 
c210: 3d 20 4f 46 46 3b 20 3c 2f 62 3e 28 30 29 3c 2f  = OFF; </b>(0)</
c220: 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20  p>.    <p>Query 
c230: 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 73 65  or change the se
c240: 74 74 69 6e 67 20 6f 66 20 74 68 65 20 22 73 79  tting of the "sy
c250: 6e 63 68 72 6f 6e 6f 75 73 22 20 66 6c 61 67 20  nchronous" flag 
c260: 69 6e 0a 20 20 20 20 74 68 65 20 64 61 74 61 62  in.    the datab
c270: 61 73 65 2e 20 20 54 68 65 20 66 69 72 73 74 20  ase.  The first 
c280: 28 71 75 65 72 79 29 20 66 6f 72 6d 20 77 69 6c  (query) form wil
c290: 6c 20 72 65 74 75 72 6e 20 74 68 65 20 73 65 74  l return the set
c2a0: 74 69 6e 67 20 61 73 20 61 6e 20 0a 20 20 20 20  ting as an .    
c2b0: 69 6e 74 65 67 65 72 2e 20 20 57 68 65 6e 20 73  integer.  When s
c2c0: 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20 46 55  ynchronous is FU
c2d0: 4c 4c 20 28 32 29 2c 20 74 68 65 20 53 51 4c 69  LL (2), the SQLi
c2e0: 74 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  te database engi
c2f0: 6e 65 20 77 69 6c 6c 0a 20 20 20 20 70 61 75 73  ne will.    paus
c300: 65 20 61 74 20 63 72 69 74 69 63 61 6c 20 6d 6f  e at critical mo
c310: 6d 65 6e 74 73 20 74 6f 20 6d 61 6b 65 20 73 75  ments to make su
c320: 72 65 20 74 68 61 74 20 64 61 74 61 20 68 61 73  re that data has
c330: 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e 20 0a   actually been .
c340: 20 20 20 20 77 72 69 74 74 65 6e 20 74 6f 20 74      written to t
c350: 68 65 20 64 69 73 6b 20 73 75 72 66 61 63 65 20  he disk surface 
c360: 62 65 66 6f 72 65 20 63 6f 6e 74 69 6e 75 69 6e  before continuin
c370: 67 2e 20 20 54 68 69 73 20 65 6e 73 75 72 65 73  g.  This ensures
c380: 20 74 68 61 74 20 69 66 0a 20 20 20 20 74 68 65   that if.    the
c390: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
c3a0: 6d 20 63 72 61 73 68 65 73 20 6f 72 20 69 66 20  m crashes or if 
c3b0: 74 68 65 72 65 20 69 73 20 61 20 70 6f 77 65 72  there is a power
c3c0: 20 66 61 69 6c 75 72 65 2c 20 74 68 65 20 64 61   failure, the da
c3d0: 74 61 62 61 73 65 0a 20 20 20 20 77 69 6c 6c 20  tabase.    will 
c3e0: 62 65 20 75 6e 63 6f 72 72 75 70 74 65 64 20 61  be uncorrupted a
c3f0: 66 74 65 72 20 72 65 62 6f 6f 74 69 6e 67 2e 20  fter rebooting. 
c400: 20 46 55 4c 4c 20 73 79 6e 63 68 72 6f 6e 6f 75   FULL synchronou
c410: 73 20 69 73 20 76 65 72 79 20 0a 20 20 20 20 73  s is very .    s
c420: 61 66 65 2c 20 62 75 74 20 69 74 20 69 73 20 61  afe, but it is a
c430: 6c 73 6f 20 73 6c 6f 77 2e 20 20 0a 20 20 20 20  lso slow.  .    
c440: 57 68 65 6e 20 73 79 6e 63 68 72 6f 6e 6f 75 73  When synchronous
c450: 20 69 73 20 4e 4f 52 4d 41 4c 20 28 31 2c 20 74   is NORMAL (1, t
c460: 68 65 20 64 65 66 61 75 6c 74 29 2c 20 74 68 65  he default), the
c470: 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65   SQLite database
c480: 0a 20 20 20 20 65 6e 67 69 6e 65 20 77 69 6c 6c  .    engine will
c490: 20 73 74 69 6c 6c 20 70 61 75 73 65 20 61 74 20   still pause at 
c4a0: 74 68 65 20 6d 6f 73 74 20 63 72 69 74 69 63 61  the most critica
c4b0: 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62 75 74 20 6c  l moments, but l
c4c0: 65 73 73 20 6f 66 74 65 6e 0a 20 20 20 20 74 68  ess often.    th
c4d0: 61 6e 20 69 6e 20 46 55 4c 4c 20 6d 6f 64 65 2e  an in FULL mode.
c4e0: 20 20 54 68 65 72 65 20 69 73 20 61 20 76 65 72    There is a ver
c4f0: 79 20 73 6d 61 6c 6c 20 28 74 68 6f 75 67 68 20  y small (though 
c500: 6e 6f 6e 2d 7a 65 72 6f 29 20 63 68 61 6e 63 65  non-zero) chance
c510: 20 74 68 61 74 0a 20 20 20 20 61 20 70 6f 77 65   that.    a powe
c520: 72 20 66 61 69 6c 75 72 65 20 61 74 20 6a 75 73  r failure at jus
c530: 74 20 74 68 65 20 77 72 6f 6e 67 20 74 69 6d 65  t the wrong time
c540: 20 63 6f 75 6c 64 20 63 6f 72 72 75 70 74 20 74   could corrupt t
c550: 68 65 20 64 61 74 61 62 61 73 65 20 69 6e 0a 20  he database in. 
c560: 20 20 20 4e 4f 52 4d 41 4c 20 6d 6f 64 65 2e 20     NORMAL mode. 
c570: 20 42 75 74 20 69 6e 20 70 72 61 63 74 69 63 65   But in practice
c580: 2c 20 79 6f 75 20 61 72 65 20 6d 6f 72 65 20 6c  , you are more l
c590: 69 6b 65 6c 79 20 74 6f 20 73 75 66 66 65 72 0a  ikely to suffer.
c5a0: 20 20 20 20 61 20 63 61 74 61 73 74 72 6f 70 68      a catastroph
c5b0: 69 63 20 64 69 73 6b 20 66 61 69 6c 75 72 65 20  ic disk failure 
c5c0: 6f 72 20 73 6f 6d 65 20 6f 74 68 65 72 20 75 6e  or some other un
c5d0: 72 65 63 6f 76 65 72 61 62 6c 65 20 68 61 72 64  recoverable hard
c5e0: 77 61 72 65 0a 20 20 20 20 66 61 75 6c 74 2e 20  ware.    fault. 
c5f0: 20 53 6f 20 4e 4f 52 4d 41 4c 20 69 73 20 74 68   So NORMAL is th
c600: 65 20 64 65 66 61 75 6c 74 20 6d 6f 64 65 2e 0a  e default mode..
c610: 20 20 20 20 57 69 74 68 20 73 79 6e 63 68 72 6f      With synchro
c620: 6e 6f 75 73 20 4f 46 46 20 28 30 29 2c 20 53 51  nous OFF (0), SQ
c630: 4c 69 74 65 20 63 6f 6e 74 69 6e 75 65 73 20 77  Lite continues w
c640: 69 74 68 6f 75 74 20 70 61 75 73 69 6e 67 0a 20  ithout pausing. 
c650: 20 20 20 61 73 20 73 6f 6f 6e 20 61 73 20 69 74     as soon as it
c660: 20 68 61 73 20 68 61 6e 64 65 64 20 64 61 74 61   has handed data
c670: 20 6f 66 66 20 74 6f 20 74 68 65 20 6f 70 65 72   off to the oper
c680: 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a 20 20  ating system..  
c690: 20 20 49 66 20 74 68 65 20 61 70 70 6c 69 63 61    If the applica
c6a0: 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20 53 51 4c  tion running SQL
c6b0: 69 74 65 20 63 72 61 73 68 65 73 2c 20 74 68 65  ite crashes, the
c6c0: 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20 73 61   data will be sa
c6d0: 66 65 2c 20 62 75 74 0a 20 20 20 20 74 68 65 20  fe, but.    the 
c6e0: 64 61 74 61 62 61 73 65 20 6d 69 67 68 74 20 62  database might b
c6f0: 65 63 6f 6d 65 20 63 6f 72 72 75 70 74 65 64 20  ecome corrupted 
c700: 69 66 20 74 68 65 20 6f 70 65 72 61 74 69 6e 67  if the operating
c710: 20 73 79 73 74 65 6d 0a 20 20 20 20 63 72 61 73   system.    cras
c720: 68 65 73 20 6f 72 20 74 68 65 20 63 6f 6d 70 75  hes or the compu
c730: 74 65 72 20 6c 6f 73 65 73 20 70 6f 77 65 72 20  ter loses power 
c740: 62 65 66 6f 72 65 20 74 68 61 74 20 64 61 74 61  before that data
c750: 20 68 61 73 20 62 65 65 6e 20 77 72 69 74 74 65   has been writte
c760: 6e 0a 20 20 20 20 74 6f 20 74 68 65 20 64 69 73  n.    to the dis
c770: 6b 20 73 75 72 66 61 63 65 2e 20 20 4f 6e 20 74  k surface.  On t
c780: 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c 20 73  he other hand, s
c790: 6f 6d 65 0a 20 20 20 20 6f 70 65 72 61 74 69 6f  ome.    operatio
c7a0: 6e 73 20 61 72 65 20 61 73 20 6d 75 63 68 20 61  ns are as much a
c7b0: 73 20 35 30 20 6f 72 20 6d 6f 72 65 20 74 69 6d  s 50 or more tim
c7c0: 65 73 20 66 61 73 74 65 72 20 77 69 74 68 20 73  es faster with s
c7d0: 79 6e 63 68 72 6f 6e 6f 75 73 20 4f 46 46 2e 0a  ynchronous OFF..
c7e0: 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e      </p>.    <p>
c7f0: 54 68 69 73 20 70 72 61 67 6d 61 20 63 68 61 6e  This pragma chan
c800: 67 65 73 20 74 68 65 20 73 79 6e 63 68 72 6f 6e  ges the synchron
c810: 6f 75 73 20 6d 6f 64 65 20 70 65 72 73 69 73 74  ous mode persist
c820: 65 6e 74 6c 79 2e 20 20 4f 6e 63 65 20 63 68 61  ently.  Once cha
c830: 6e 67 65 64 2c 0a 20 20 20 20 74 68 65 20 6d 6f  nged,.    the mo
c840: 64 65 20 73 74 61 79 73 20 61 73 20 73 65 74 20  de stays as set 
c850: 65 76 65 6e 20 69 66 20 74 68 65 20 64 61 74 61  even if the data
c860: 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64 20 61  base is closed a
c870: 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20 20 54 68  nd reopened.  Th
c880: 65 0a 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23  e.    <a href="#
c890: 70 72 61 67 6d 61 5f 73 79 6e 63 68 72 6f 6e 6f  pragma_synchrono
c8a0: 75 73 22 3e 3c 62 3e 73 79 6e 63 68 72 6f 6e 6f  us"><b>synchrono
c8b0: 75 73 3c 2f 62 3e 3c 2f 61 3e 20 70 72 61 67 6d  us</b></a> pragm
c8c0: 61 20 64 6f 65 73 20 74 68 65 20 73 61 6d 65 20  a does the same 
c8d0: 0a 20 20 20 20 74 68 69 6e 67 20 62 75 74 20 6f  .    thing but o
c8e0: 6e 6c 79 20 61 70 70 6c 69 65 73 20 74 68 65 20  nly applies the 
c8f0: 73 65 74 74 69 6e 67 20 74 6f 20 74 68 65 20 63  setting to the c
c900: 75 72 72 65 6e 74 20 73 65 73 73 69 6f 6e 2e 3c  urrent session.<
c910: 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d  /p></li>..<a nam
c920: 65 3d 22 70 72 61 67 6d 61 5f 64 65 66 61 75 6c  e="pragma_defaul
c930: 74 5f 74 65 6d 70 5f 73 74 6f 72 65 22 3e 3c 2f  t_temp_store"></
c940: 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  a>.<li><p><b>PRA
c950: 47 4d 41 20 64 65 66 61 75 6c 74 5f 74 65 6d 70  GMA default_temp
c960: 5f 73 74 6f 72 65 3b 0a 20 20 20 20 20 20 20 3c  _store;.       <
c970: 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61 75 6c  br>PRAGMA defaul
c980: 74 5f 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20 44  t_temp_store = D
c990: 45 46 41 55 4c 54 3b 20 3c 2f 62 3e 28 30 29 3c  EFAULT; </b>(0)<
c9a0: 62 3e 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52  b>.       <br>PR
c9b0: 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 74 65 6d  AGMA default_tem
c9c0: 70 5f 73 74 6f 72 65 20 3d 20 4d 45 4d 4f 52 59  p_store = MEMORY
c9d0: 3b 20 3c 2f 62 3e 28 32 29 3c 62 3e 0a 20 20 20  ; </b>(2)<b>.   
c9e0: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 64      <br>PRAGMA d
c9f0: 65 66 61 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72  efault_temp_stor
ca00: 65 20 3d 20 46 49 4c 45 3b 3c 2f 62 3e 20 28 31  e = FILE;</b> (1
ca10: 29 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65  )</p>.    <p>Que
ca20: 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74 68 65  ry or change the
ca30: 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20   setting of the 
ca40: 22 3c 62 3e 74 65 6d 70 5f 73 74 6f 72 65 3c 2f  "<b>temp_store</
ca50: 62 3e 22 20 66 6c 61 67 20 73 74 6f 72 65 64 20  b>" flag stored 
ca60: 69 6e 0a 20 20 20 20 74 68 65 20 64 61 74 61 62  in.    the datab
ca70: 61 73 65 2e 20 20 57 68 65 6e 20 74 65 6d 70 5f  ase.  When temp_
ca80: 73 74 6f 72 65 20 69 73 20 44 45 46 41 55 4c 54  store is DEFAULT
ca90: 20 28 30 29 2c 20 74 68 65 20 63 6f 6d 70 69 6c   (0), the compil
caa0: 65 2d 74 69 6d 65 20 76 61 6c 75 65 0a 20 20 20  e-time value.   
cab0: 20 6f 66 20 74 68 65 20 73 79 6d 62 6f 6c 20 54   of the symbol T
cac0: 45 4d 50 5f 53 54 4f 52 45 20 69 73 20 75 73 65  EMP_STORE is use
cad0: 64 20 66 6f 72 20 74 68 65 20 74 65 6d 70 6f 72  d for the tempor
cae0: 61 72 79 20 64 61 74 61 62 61 73 65 2e 20 20 0a  ary database.  .
caf0: 20 20 20 20 57 68 65 6e 20 74 65 6d 70 5f 73 74      When temp_st
cb00: 6f 72 65 20 69 73 20 4d 45 4d 4f 52 59 20 28 32  ore is MEMORY (2
cb10: 29 2c 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20  ), an in-memory 
cb20: 64 61 74 61 62 61 73 65 20 69 73 20 75 73 65 64  database is used
cb30: 2e 20 20 0a 20 20 20 20 57 68 65 6e 20 74 65 6d  .  .    When tem
cb40: 70 5f 73 74 6f 72 65 20 69 73 20 46 49 4c 45 20  p_store is FILE 
cb50: 28 31 29 2c 20 61 20 74 65 6d 70 6f 72 61 72 79  (1), a temporary
cb60: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 6f   database file o
cb70: 6e 20 64 69 73 6b 20 77 69 6c 6c 20 62 65 20 75  n disk will be u
cb80: 73 65 64 2e 0a 20 20 20 20 49 74 20 69 73 20 70  sed..    It is p
cb90: 6f 73 73 69 62 6c 65 20 66 6f 72 20 74 68 65 20  ossible for the 
cba0: 6c 69 62 72 61 72 79 20 63 6f 6d 70 69 6c 65 2d  library compile-
cbb0: 74 69 6d 65 20 73 79 6d 62 6f 6c 20 54 45 4d 50  time symbol TEMP
cbc0: 5f 53 54 4f 52 45 20 74 6f 20 6f 76 65 72 72 69  _STORE to overri
cbd0: 64 65 20 0a 20 20 20 20 74 68 69 73 20 73 65 74  de .    this set
cbe0: 74 69 6e 67 2e 20 20 54 68 65 20 66 6f 6c 6c 6f  ting.  The follo
cbf0: 77 69 6e 67 20 74 61 62 6c 65 20 73 75 6d 6d 61  wing table summa
cc00: 72 69 7a 65 73 20 74 68 69 73 3a 3c 2f 70 3e 0a  rizes this:</p>.
cc10: 0a 3c 74 61 62 6c 65 20 63 65 6c 6c 70 61 64 64  .<table cellpadd
cc20: 69 6e 67 3d 22 32 22 3e 0a 3c 74 72 3e 3c 74 68  ing="2">.<tr><th
cc30: 3e 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74 68 3e  >TEMP_STORE</th>
cc40: 3c 74 68 3e 74 65 6d 70 5f 73 74 6f 72 65 3c 2f  <th>temp_store</
cc50: 74 68 3e 3c 74 68 3e 74 65 6d 70 20 64 61 74 61  th><th>temp data
cc60: 62 61 73 65 20 6c 6f 63 61 74 69 6f 6e 3c 2f 74  base location</t
cc70: 68 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 20  h></tr>.<tr><td 
cc80: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30  align="center">0
cc90: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
cca0: 63 65 6e 74 65 72 22 3e 3c 65 6d 3e 61 6e 79 3c  center"><em>any<
ccb0: 2f 65 6d 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  /em></td><td ali
ccc0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 66 69 6c 65  gn="center">file
ccd0: 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c  </td></tr>.<tr><
cce0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
ccf0: 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  ">1</td><td alig
cd00: 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74 64  n="center">0</td
cd10: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
cd20: 65 72 22 3e 66 69 6c 65 3c 2f 74 64 3e 3c 2f 74  er">file</td></t
cd30: 72 3e 0a 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e  r>.<tr><td align
cd40: 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64 3e  ="center">1</td>
cd50: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
cd60: 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  r">1</td><td ali
cd70: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 66 69 6c 65  gn="center">file
cd80: 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c  </td></tr>.<tr><
cd90: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
cda0: 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67  ">1</td><td alig
cdb0: 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c 2f 74 64  n="center">2</td
cdc0: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
cdd0: 65 72 22 3e 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c  er">memory</td><
cde0: 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 20 61 6c 69  /tr>.<tr><td ali
cdf0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c 2f 74  gn="center">2</t
ce00: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
ce10: 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20 61  ter">0</td><td a
ce20: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6d 65  lign="center">me
ce30: 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c  mory</td></tr>.<
ce40: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
ce50: 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74 64 20  nter">2</td><td 
ce60: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 31  align="center">1
ce70: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
ce80: 63 65 6e 74 65 72 22 3e 66 69 6c 65 3c 2f 74 64  center">file</td
ce90: 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 20 61  ></tr>.<tr><td a
cea0: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c  lign="center">2<
ceb0: 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  /td><td align="c
cec0: 65 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74 64  enter">2</td><td
ced0: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
cee0: 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e  memory</td></tr>
cef0: 0a 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  .<tr><td align="
cf00: 63 65 6e 74 65 72 22 3e 33 3c 2f 74 64 3e 3c 74  center">3</td><t
cf10: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
cf20: 3e 3c 65 6d 3e 61 6e 79 3c 2f 65 6d 3e 3c 2f 74  ><em>any</em></t
cf30: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
cf40: 74 65 72 22 3e 6d 65 6d 6f 72 79 3c 2f 74 64 3e  ter">memory</td>
cf50: 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a 0a  </tr>.</table>..
cf60: 20 20 20 20 3c 70 3e 54 68 69 73 20 70 72 61 67      <p>This prag
cf70: 6d 61 20 63 68 61 6e 67 65 73 20 74 68 65 20 74  ma changes the t
cf80: 65 6d 70 5f 73 74 6f 72 65 20 6d 6f 64 65 20 66  emp_store mode f
cf90: 6f 72 20 77 68 65 6e 65 76 65 72 20 74 68 65 20  or whenever the 
cfa0: 64 61 74 61 62 61 73 65 0a 20 20 20 20 69 73 20  database.    is 
cfb0: 6f 70 65 6e 65 64 20 69 6e 20 74 68 65 20 66 75  opened in the fu
cfc0: 74 75 72 65 2e 20 20 54 68 65 20 74 65 6d 70 5f  ture.  The temp_
cfd0: 73 74 6f 72 65 20 6d 6f 64 65 20 66 6f 72 20 74  store mode for t
cfe0: 68 65 20 63 75 72 72 65 6e 74 20 73 65 73 73 69  he current sessi
cff0: 6f 6e 0a 20 20 20 20 69 73 20 75 6e 63 68 61 6e  on.    is unchan
d000: 67 65 64 2e 20 20 55 73 65 20 74 68 65 20 0a 20  ged.  Use the . 
d010: 20 20 20 3c 61 20 68 72 65 66 3d 22 23 70 72 61     <a href="#pra
d020: 67 6d 61 5f 74 65 6d 70 5f 73 74 6f 72 65 22 3e  gma_temp_store">
d030: 3c 62 3e 74 65 6d 70 5f 73 74 6f 72 65 3c 2f 62  <b>temp_store</b
d040: 3e 3c 2f 61 3e 20 70 72 61 67 6d 61 20 74 6f 20  ></a> pragma to 
d050: 63 68 61 6e 67 65 20 74 68 65 0a 20 20 20 20 74  change the.    t
d060: 65 6d 70 5f 73 74 6f 72 65 20 6d 6f 64 65 20 66  emp_store mode f
d070: 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 73  or the current s
d080: 65 73 73 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e  ession.</p></li>
d090: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47  ..<li><p><b>PRAG
d0a0: 4d 41 20 66 6f 72 65 69 67 6e 5f 6b 65 79 5f 6c  MA foreign_key_l
d0b0: 69 73 74 28 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65  ist(</b><i>table
d0c0: 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f  -name</i><b>);</
d0d0: 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 46 6f  b></p>.    <p>Fo
d0e0: 72 20 65 61 63 68 20 66 6f 72 65 69 67 6e 20 6b  r each foreign k
d0f0: 65 79 20 74 68 61 74 20 72 65 66 65 72 65 6e 63  ey that referenc
d100: 65 73 20 61 20 63 6f 6c 75 6d 6e 20 69 6e 20 74  es a column in t
d110: 68 65 20 61 72 67 75 6d 65 6e 74 0a 20 20 20 20  he argument.    
d120: 74 61 62 6c 65 2c 20 69 6e 76 6f 6b 65 20 74 68  table, invoke th
d130: 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74  e callback funct
d140: 69 6f 6e 20 77 69 74 68 20 69 6e 66 6f 72 6d 61  ion with informa
d150: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 61 74 0a  tion about that.
d160: 20 20 20 20 66 6f 72 65 69 67 6e 20 6b 65 79 2e      foreign key.
d170: 20 54 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75   The callback fu
d180: 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 69  nction will be i
d190: 6e 76 6f 6b 65 64 20 6f 6e 63 65 20 66 6f 72 20  nvoked once for 
d1a0: 65 61 63 68 0a 20 20 20 20 63 6f 6c 75 6d 6e 20  each.    column 
d1b0: 69 6e 20 65 61 63 68 20 66 6f 72 65 69 67 6e 20  in each foreign 
d1c0: 6b 65 79 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c  key.</p></li>..<
d1d0: 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20  li><p><b>PRAGMA 
d1e0: 69 6e 64 65 78 5f 69 6e 66 6f 28 3c 2f 62 3e 3c  index_info(</b><
d1f0: 69 3e 69 6e 64 65 78 2d 6e 61 6d 65 3c 2f 69 3e  i>index-name</i>
d200: 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20  <b>);</b></p>.  
d210: 20 20 3c 70 3e 46 6f 72 20 65 61 63 68 20 63 6f    <p>For each co
d220: 6c 75 6d 6e 20 74 68 61 74 20 74 68 65 20 6e 61  lumn that the na
d230: 6d 65 64 20 69 6e 64 65 78 20 72 65 66 65 72 65  med index refere
d240: 6e 63 65 73 2c 20 69 6e 76 6f 6b 65 20 74 68 65  nces, invoke the
d250: 20 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 66   .    callback f
d260: 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65  unction.    once
d270: 20 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f   with informatio
d280: 6e 20 61 62 6f 75 74 20 74 68 61 74 20 63 6f 6c  n about that col
d290: 75 6d 6e 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74  umn, including t
d2a0: 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a  he column name,.
d2b0: 20 20 20 20 61 6e 64 20 74 68 65 20 63 6f 6c 75      and the colu
d2c0: 6d 6e 20 6e 75 6d 62 65 72 2e 3c 2f 70 3e 3c 2f  mn number.</p></
d2d0: 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  li>..<li><p><b>P
d2e0: 52 41 47 4d 41 20 69 6e 64 65 78 5f 6c 69 73 74  RAGMA index_list
d2f0: 28 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61  (</b><i>table-na
d300: 6d 65 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c  me</i><b>);</b><
d310: 2f 70 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65  /p>.    <p>For e
d320: 61 63 68 20 69 6e 64 65 78 20 6f 6e 20 74 68 65  ach index on the
d330: 20 6e 61 6d 65 64 20 74 61 62 6c 65 2c 20 69 6e   named table, in
d340: 76 6f 6b 65 20 74 68 65 20 63 61 6c 6c 62 61 63  voke the callbac
d350: 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f  k function.    o
d360: 6e 63 65 20 77 69 74 68 20 69 6e 66 6f 72 6d 61  nce with informa
d370: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 61 74 20  tion about that 
d380: 69 6e 64 65 78 2e 20 20 41 72 67 75 6d 65 6e 74  index.  Argument
d390: 73 20 69 6e 63 6c 75 64 65 20 74 68 65 0a 20 20  s include the.  
d3a0: 20 20 69 6e 64 65 78 20 6e 61 6d 65 20 61 6e 64    index name and
d3b0: 20 61 20 66 6c 61 67 20 74 6f 20 69 6e 64 69 63   a flag to indic
d3c0: 61 74 65 20 77 68 65 74 68 65 72 20 6f 72 20 6e  ate whether or n
d3d0: 6f 74 20 74 68 65 20 69 6e 64 65 78 20 6d 75 73  ot the index mus
d3e0: 74 20 62 65 0a 20 20 20 20 75 6e 69 71 75 65 2e  t be.    unique.
d3f0: 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c  </p></li>..<li><
d400: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69 6e 74 65  p><b>PRAGMA inte
d410: 67 72 69 74 79 5f 63 68 65 63 6b 3b 3c 2f 62 3e  grity_check;</b>
d420: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68 65 20  </p>.    <p>The 
d430: 63 6f 6d 6d 61 6e 64 20 64 6f 65 73 20 61 6e 20  command does an 
d440: 69 6e 74 65 67 72 69 74 79 20 63 68 65 63 6b 20  integrity check 
d450: 6f 66 20 74 68 65 20 65 6e 74 69 72 65 20 64 61  of the entire da
d460: 74 61 62 61 73 65 2e 20 20 49 74 0a 20 20 20 20  tabase.  It.    
d470: 6c 6f 6f 6b 73 20 66 6f 72 20 6f 75 74 2d 6f 66  looks for out-of
d480: 2d 6f 72 64 65 72 20 72 65 63 6f 72 64 73 2c 20  -order records, 
d490: 6d 69 73 73 69 6e 67 20 70 61 67 65 73 2c 20 6d  missing pages, m
d4a0: 61 6c 66 6f 72 6d 65 64 20 72 65 63 6f 72 64 73  alformed records
d4b0: 2c 20 61 6e 64 0a 20 20 20 20 63 6f 72 72 75 70  , and.    corrup
d4c0: 74 20 69 6e 64 69 63 65 73 2e 0a 20 20 20 20 49  t indices..    I
d4d0: 66 20 61 6e 79 20 70 72 6f 62 6c 65 6d 73 20 61  f any problems a
d4e0: 72 65 20 66 6f 75 6e 64 2c 20 74 68 65 6e 20 61  re found, then a
d4f0: 20 73 69 6e 67 6c 65 20 73 74 72 69 6e 67 20 69   single string i
d500: 73 20 72 65 74 75 72 6e 65 64 20 77 68 69 63 68  s returned which
d510: 20 69 73 0a 20 20 20 20 61 20 64 65 73 63 72 69   is.    a descri
d520: 70 74 69 6f 6e 20 6f 66 20 61 6c 6c 20 70 72 6f  ption of all pro
d530: 62 6c 65 6d 73 2e 20 20 49 66 20 65 76 65 72 79  blems.  If every
d540: 74 68 69 6e 67 20 69 73 20 69 6e 20 6f 72 64 65  thing is in orde
d550: 72 2c 20 22 6f 6b 22 20 69 73 0a 20 20 20 20 72  r, "ok" is.    r
d560: 65 74 75 72 6e 65 64 2e 3c 2f 70 3e 3c 2f 6c 69  eturned.</p></li
d570: 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41  >..<li><p><b>PRA
d580: 47 4d 41 20 70 61 72 73 65 72 5f 74 72 61 63 65  GMA parser_trace
d590: 20 3d 20 4f 4e 3b 20 3c 2f 62 3e 28 31 29 3c 62   = ON; </b>(1)<b
d5a0: 3e 0a 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41  >.    <br>PRAGMA
d5b0: 20 70 61 72 73 65 72 5f 74 72 61 63 65 20 3d 20   parser_trace = 
d5c0: 4f 46 46 3b 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e  OFF;</b> (0)</p>
d5d0: 0a 20 20 20 20 3c 70 3e 54 75 72 6e 20 74 72 61  .    <p>Turn tra
d5e0: 63 69 6e 67 20 6f 66 20 74 68 65 20 53 51 4c 20  cing of the SQL 
d5f0: 70 61 72 73 65 72 20 69 6e 73 69 64 65 20 6f 66  parser inside of
d600: 20 74 68 65 0a 20 20 20 20 53 51 4c 69 74 65 20   the.    SQLite 
d610: 6c 69 62 72 61 72 79 20 6f 6e 20 61 6e 64 20 6f  library on and o
d620: 66 66 2e 20 20 54 68 69 73 20 69 73 20 75 73 65  ff.  This is use
d630: 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e  d for debugging.
d640: 0a 20 20 20 20 54 68 69 73 20 6f 6e 6c 79 20 77  .    This only w
d650: 6f 72 6b 73 20 69 66 20 74 68 65 20 6c 69 62 72  orks if the libr
d660: 61 72 79 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  ary is compiled 
d670: 77 69 74 68 6f 75 74 20 74 68 65 20 4e 44 45 42  without the NDEB
d680: 55 47 20 6d 61 63 72 6f 2e 0a 20 20 20 20 3c 2f  UG macro..    </
d690: 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65  p></li>..<a name
d6a0: 3d 22 70 72 61 67 6d 61 5f 73 79 6e 63 68 72 6f  ="pragma_synchro
d6b0: 6e 6f 75 73 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c  nous"></a>.<li><
d6c0: 70 3e 3c 62 3e 50 52 41 47 4d 41 20 73 79 6e 63  p><b>PRAGMA sync
d6d0: 68 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 20 20 20  hronous;.       
d6e0: 3c 62 72 3e 50 52 41 47 4d 41 20 73 79 6e 63 68  <br>PRAGMA synch
d6f0: 72 6f 6e 6f 75 73 20 3d 20 46 55 4c 4c 3b 20 3c  ronous = FULL; <
d700: 2f 62 3e 28 32 29 3c 62 3e 0a 20 20 20 20 20 20  /b>(2)<b>.      
d710: 20 3c 62 72 3e 50 52 41 47 4d 41 20 73 79 6e 63   <br>PRAGMA sync
d720: 68 72 6f 6e 6f 75 73 20 3d 20 4e 4f 52 4d 41 4c  hronous = NORMAL
d730: 3b 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a 20 20 20  ; </b>(1)<b>.   
d740: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 73      <br>PRAGMA s
d750: 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20 4f 46 46  ynchronous = OFF
d760: 3b 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e 0a 20 20  ;</b> (0)</p>.  
d770: 20 20 3c 70 3e 51 75 65 72 79 20 6f 72 20 63 68    <p>Query or ch
d780: 61 6e 67 65 20 74 68 65 20 73 65 74 74 69 6e 67  ange the setting
d790: 20 6f 66 20 74 68 65 20 22 73 79 6e 63 68 72 6f   of the "synchro
d7a0: 6e 6f 75 73 22 20 66 6c 61 67 20 61 66 66 65 63  nous" flag affec
d7b0: 74 69 6e 67 0a 20 20 20 20 74 68 65 20 64 61 74  ting.    the dat
d7c0: 61 62 61 73 65 20 66 6f 72 20 74 68 65 20 64 75  abase for the du
d7d0: 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 75  ration of the cu
d7e0: 72 72 65 6e 74 20 64 61 74 61 62 61 73 65 20 63  rrent database c
d7f0: 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20 20 20 54  onnection..    T
d800: 68 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 66  he synchronous f
d810: 6c 61 67 20 72 65 76 65 72 74 73 20 74 6f 20 69  lag reverts to i
d820: 74 73 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  ts default value
d830: 20 77 68 65 6e 20 74 68 65 20 64 61 74 61 62 61   when the databa
d840: 73 65 0a 20 20 20 20 69 73 20 63 6c 6f 73 65 64  se.    is closed
d850: 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20 20   and reopened.  
d860: 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69  For additional i
d870: 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68  nformation on th
d880: 65 20 73 79 6e 63 68 72 6f 6e 6f 75 73 0a 20 20  e synchronous.  
d890: 20 20 66 6c 61 67 2c 20 73 65 65 20 74 68 65 20    flag, see the 
d8a0: 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  description of t
d8b0: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 70 72 61  he <a href="#pra
d8c0: 67 6d 61 5f 64 65 66 61 75 6c 74 5f 73 79 6e 63  gma_default_sync
d8d0: 68 72 6f 6e 6f 75 73 22 3e 0a 20 20 20 20 3c 62  hronous">.    <b
d8e0: 3e 64 65 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f  >default_synchro
d8f0: 6e 6f 75 73 3c 2f 62 3e 3c 2f 61 3e 20 70 72 61  nous</b></a> pra
d900: 67 6d 61 2e 3c 2f 70 3e 0a 20 20 20 20 3c 2f 6c  gma.</p>.    </l
d910: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52  i>..<li><p><b>PR
d920: 41 47 4d 41 20 74 61 62 6c 65 5f 69 6e 66 6f 28  AGMA table_info(
d930: 3c 2f 62 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d  </b><i>table-nam
d940: 65 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f  e</i><b>);</b></
d950: 70 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65 61  p>.    <p>For ea
d960: 63 68 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65  ch column in the
d970: 20 6e 61 6d 65 64 20 74 61 62 6c 65 2c 20 69 6e   named table, in
d980: 76 6f 6b 65 20 74 68 65 20 63 61 6c 6c 62 61 63  voke the callbac
d990: 6b 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 6f  k function.    o
d9a0: 6e 63 65 20 77 69 74 68 20 69 6e 66 6f 72 6d 61  nce with informa
d9b0: 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 61 74 20  tion about that 
d9c0: 63 6f 6c 75 6d 6e 2c 20 69 6e 63 6c 75 64 69 6e  column, includin
d9d0: 67 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61 6d  g the column nam
d9e0: 65 2c 0a 20 20 20 20 64 61 74 61 20 74 79 70 65  e,.    data type
d9f0: 2c 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  , whether or not
da00: 20 74 68 65 20 63 6f 6c 75 6d 6e 20 63 61 6e 20   the column can 
da10: 62 65 20 4e 55 4c 4c 2c 20 61 6e 64 20 74 68 65  be NULL, and the
da20: 20 64 65 66 61 75 6c 74 0a 20 20 20 20 76 61 6c   default.    val
da30: 75 65 20 66 6f 72 20 74 68 65 20 63 6f 6c 75 6d  ue for the colum
da40: 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20  n.</p></li>..<a 
da50: 6e 61 6d 65 3d 22 70 72 61 67 6d 61 5f 74 65 6d  name="pragma_tem
da60: 70 5f 73 74 6f 72 65 22 3e 3c 2f 61 3e 0a 3c 6c  p_store"></a>.<l
da70: 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 74  i><p><b>PRAGMA t
da80: 65 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 20 20 20  emp_store;.     
da90: 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 74 65 6d    <br>PRAGMA tem
daa0: 70 5f 73 74 6f 72 65 20 3d 20 44 45 46 41 55 4c  p_store = DEFAUL
dab0: 54 3b 20 3c 2f 62 3e 28 30 29 3c 62 3e 0a 20 20  T; </b>(0)<b>.  
dac0: 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20       <br>PRAGMA 
dad0: 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20 4d 45 4d  temp_store = MEM
dae0: 4f 52 59 3b 20 3c 2f 62 3e 28 32 29 3c 62 3e 0a  ORY; </b>(2)<b>.
daf0: 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d         <br>PRAGM
db00: 41 20 74 65 6d 70 5f 73 74 6f 72 65 20 3d 20 46  A temp_store = F
db10: 49 4c 45 3b 3c 2f 62 3e 20 28 31 29 3c 2f 70 3e  ILE;</b> (1)</p>
db20: 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20 6f 72  .    <p>Query or
db30: 20 63 68 61 6e 67 65 20 74 68 65 20 73 65 74 74   change the sett
db40: 69 6e 67 20 6f 66 20 74 68 65 20 22 74 65 6d 70  ing of the "temp
db50: 5f 73 74 6f 72 65 22 20 66 6c 61 67 20 61 66 66  _store" flag aff
db60: 65 63 74 69 6e 67 0a 20 20 20 20 74 68 65 20 64  ecting.    the d
db70: 61 74 61 62 61 73 65 20 66 6f 72 20 74 68 65 20  atabase for the 
db80: 64 75 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20  duration of the 
db90: 63 75 72 72 65 6e 74 20 64 61 74 61 62 61 73 65  current database
dba0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 20 20 20   connection..   
dbb0: 20 54 68 65 20 74 65 6d 70 5f 73 74 6f 72 65 20   The temp_store 
dbc0: 66 6c 61 67 20 72 65 76 65 72 74 73 20 74 6f 20  flag reverts to 
dbd0: 69 74 73 20 64 65 66 61 75 6c 74 20 76 61 6c 75  its default valu
dbe0: 65 20 77 68 65 6e 20 74 68 65 20 64 61 74 61 62  e when the datab
dbf0: 61 73 65 0a 20 20 20 20 69 73 20 63 6c 6f 73 65  ase.    is close
dc00: 64 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20  d and reopened. 
dc10: 20 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   For additional 
dc20: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74  information on t
dc30: 68 65 20 74 65 6d 70 5f 73 74 6f 72 65 0a 20 20  he temp_store.  
dc40: 20 20 66 6c 61 67 2c 20 73 65 65 20 74 68 65 20    flag, see the 
dc50: 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74  description of t
dc60: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 70 72 61  he <a href="#pra
dc70: 67 6d 61 5f 64 65 66 61 75 6c 74 5f 74 65 6d 70  gma_default_temp
dc80: 5f 73 74 6f 72 65 22 3e 0a 20 20 20 20 3c 62 3e  _store">.    <b>
dc90: 64 65 66 61 75 6c 74 5f 74 65 6d 70 5f 73 74 6f  default_temp_sto
dca0: 72 65 3c 2f 62 3e 3c 2f 61 3e 20 70 72 61 67 6d  re</b></a> pragm
dcb0: 61 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 69 74  a.  Note that it
dcc0: 20 69 73 20 70 6f 73 73 69 62 6c 65 20 66 6f 72   is possible for
dcd0: 20 0a 20 20 20 20 74 68 65 20 6c 69 62 72 61 72   .    the librar
dce0: 79 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f  y compile-time o
dcf0: 70 74 69 6f 6e 73 20 74 6f 20 6f 76 65 72 72 69  ptions to overri
dd00: 64 65 20 74 68 69 73 20 73 65 74 74 69 6e 67 2e  de this setting.
dd10: 20 3c 2f 70 3e 0a 0a 20 20 20 20 3c 70 3e 57 68   </p>..    <p>Wh
dd20: 65 6e 20 74 68 65 20 74 65 6d 70 5f 73 74 6f 72  en the temp_stor
dd30: 65 20 73 65 74 74 69 6e 67 20 69 73 20 63 68 61  e setting is cha
dd40: 6e 67 65 64 2c 20 61 6c 6c 20 65 78 69 73 74 69  nged, all existi
dd50: 6e 67 20 74 65 6d 70 6f 72 61 72 79 0a 20 20 20  ng temporary.   
dd60: 20 74 61 62 6c 65 73 2c 20 69 6e 64 69 63 65 73   tables, indices
dd70: 2c 20 74 72 69 67 67 65 72 73 2c 20 61 6e 64 20  , triggers, and 
dd80: 76 69 65 77 65 72 73 20 61 72 65 20 69 6d 6d 65  viewers are imme
dd90: 64 69 61 74 65 6c 79 20 64 65 6c 65 74 65 64 2e  diately deleted.
dda0: 0a 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 3c 2f  .    </p>.    </
ddb0: 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70 72  li>..<a name="pr
ddc0: 61 67 6d 61 5f 76 64 62 65 5f 74 72 61 63 65 22  agma_vdbe_trace"
ddd0: 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e  ></a>.<li><p><b>
dde0: 50 52 41 47 4d 41 20 76 64 62 65 5f 74 72 61 63  PRAGMA vdbe_trac
ddf0: 65 20 3d 20 4f 4e 3b 20 3c 2f 62 3e 28 31 29 3c  e = ON; </b>(1)<
de00: 62 3e 0a 20 20 20 20 3c 62 72 3e 50 52 41 47 4d  b>.    <br>PRAGM
de10: 41 20 76 64 62 65 5f 74 72 61 63 65 20 3d 20 4f  A vdbe_trace = O
de20: 46 46 3b 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e 0a  FF;</b> (0)</p>.
de30: 20 20 20 20 3c 70 3e 54 75 72 6e 20 74 72 61 63      <p>Turn trac
de40: 69 6e 67 20 6f 66 20 74 68 65 20 76 69 72 74 75  ing of the virtu
de50: 61 6c 20 64 61 74 61 62 61 73 65 20 65 6e 67 69  al database engi
de60: 6e 65 20 69 6e 73 69 64 65 20 6f 66 20 74 68 65  ne inside of the
de70: 0a 20 20 20 20 53 51 4c 69 74 65 20 6c 69 62 72  .    SQLite libr
de80: 61 72 79 20 6f 6e 20 61 6e 64 20 6f 66 66 2e 20  ary on and off. 
de90: 20 54 68 69 73 20 69 73 20 75 73 65 64 20 66 6f   This is used fo
dea0: 72 20 64 65 62 75 67 67 69 6e 67 2e 20 20 53 65  r debugging.  Se
deb0: 65 20 74 68 65 20 0a 20 20 20 20 3c 61 20 68 72  e the .    <a hr
dec0: 65 66 3d 22 76 64 62 65 2e 68 74 6d 6c 23 74 72  ef="vdbe.html#tr
ded0: 61 63 65 22 3e 56 44 42 45 20 64 6f 63 75 6d 65  ace">VDBE docume
dee0: 6e 74 61 74 69 6f 6e 3c 2f 61 3e 20 66 6f 72 20  ntation</a> for 
def0: 6d 6f 72 65 20 0a 20 20 20 20 69 6e 66 6f 72 6d  more .    inform
df00: 61 74 69 6f 6e 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a  ation.</p></li>.
df10: 3c 2f 75 6c 3e 0a 0a 3c 70 3e 4e 6f 20 65 72 72  </ul>..<p>No err
df20: 6f 72 20 6d 65 73 73 61 67 65 20 69 73 20 67 65  or message is ge
df30: 6e 65 72 61 74 65 64 20 69 66 20 61 6e 20 75 6e  nerated if an un
df40: 6b 6e 6f 77 6e 20 70 72 61 67 6d 61 20 69 73 20  known pragma is 
df50: 69 73 73 75 65 64 2e 0a 55 6e 6b 6e 6f 77 6e 20  issued..Unknown 
df60: 70 72 61 67 6d 61 73 20 61 72 65 20 69 67 6e 6f  pragmas are igno
df70: 72 65 64 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63  red.</p>.}...Sec
df80: 74 69 6f 6e 20 52 45 50 4c 41 43 45 20 72 65 70  tion REPLACE rep
df90: 6c 61 63 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71  lace..Syntax {sq
dfa0: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52  l-statement} {.R
dfb0: 45 50 4c 41 43 45 20 49 4e 54 4f 20 5b 3c 64 61  EPLACE INTO [<da
dfc0: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
dfd0: 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20  <table-name> [( 
dfe0: 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d  <column-list> )]
dff0: 20 56 41 4c 55 45 53 20 28 20 3c 76 61 6c 75 65   VALUES ( <value
e000: 2d 6c 69 73 74 3e 20 29 20 7c 0a 52 45 50 4c 41  -list> ) |.REPLA
e010: 43 45 20 49 4e 54 4f 20 5b 3c 64 61 74 61 62 61  CE INTO [<databa
e020: 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62  se-name> .] <tab
e030: 6c 65 2d 6e 61 6d 65 3e 20 5b 28 20 3c 63 6f 6c  le-name> [( <col
e040: 75 6d 6e 2d 6c 69 73 74 3e 20 29 5d 20 3c 73 65  umn-list> )] <se
e050: 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a  lect-statement>.
e060: 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65  }..puts {.<p>The
e070: 20 52 45 50 4c 41 43 45 20 63 6f 6d 6d 61 6e 64   REPLACE command
e080: 20 69 73 20 61 6e 20 61 6c 69 61 73 20 66 6f 72   is an alias for
e090: 20 74 68 65 20 22 49 4e 53 45 52 54 20 4f 52 20   the "INSERT OR 
e0a0: 52 45 50 4c 41 43 45 22 20 76 61 72 69 61 6e 74  REPLACE" variant
e0b0: 0a 6f 66 20 74 68 65 20 3c 61 20 68 72 65 66 3d  .of the <a href=
e0c0: 22 23 69 6e 73 65 72 74 22 3e 49 4e 53 45 52 54  "#insert">INSERT
e0d0: 3c 2f 61 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20 54  </a> command.  T
e0e0: 68 69 73 20 61 6c 69 61 73 20 69 73 20 70 72 6f  his alias is pro
e0f0: 76 69 64 65 64 20 66 6f 72 0a 63 6f 6d 70 61 74  vided for.compat
e100: 69 62 69 6c 69 74 79 20 77 69 74 68 20 4d 79 53  ibility with MyS
e110: 51 4c 2e 20 20 53 65 65 20 74 68 65 20 0a 3c 61  QL.  See the .<a
e120: 20 68 72 65 66 3d 22 23 69 6e 73 65 72 74 22 3e   href="#insert">
e130: 49 4e 53 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d 61  INSERT</a> comma
e140: 6e 64 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  nd documentation
e150: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 0a   for additional.
e160: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
e170: 20 20 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 53    .}...Section S
e180: 45 4c 45 43 54 20 73 65 6c 65 63 74 0a 0a 53 79  ELECT select..Sy
e190: 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d  ntax {sql-statem
e1a0: 65 6e 74 7d 20 7b 0a 53 45 4c 45 43 54 20 5b 41  ent} {.SELECT [A
e1b0: 4c 4c 20 7c 20 44 49 53 54 49 4e 43 54 5d 20 3c  LL | DISTINCT] <
e1c0: 72 65 73 75 6c 74 3e 20 5b 46 52 4f 4d 20 3c 74  result> [FROM <t
e1d0: 61 62 6c 65 2d 6c 69 73 74 3e 5d 0a 5b 57 48 45  able-list>].[WHE
e1e0: 52 45 20 3c 65 78 70 72 3e 5d 0a 5b 47 52 4f 55  RE <expr>].[GROU
e1f0: 50 20 42 59 20 3c 65 78 70 72 2d 6c 69 73 74 3e  P BY <expr-list>
e200: 5d 0a 5b 48 41 56 49 4e 47 20 3c 65 78 70 72 3e  ].[HAVING <expr>
e210: 5d 0a 5b 3c 63 6f 6d 70 6f 75 6e 64 2d 6f 70 3e  ].[<compound-op>
e220: 20 3c 73 65 6c 65 63 74 3e 5d 2a 0a 5b 4f 52 44   <select>]*.[ORD
e230: 45 52 20 42 59 20 3c 73 6f 72 74 2d 65 78 70 72  ER BY <sort-expr
e240: 2d 6c 69 73 74 3e 5d 0a 5b 4c 49 4d 49 54 20 3c  -list>].[LIMIT <
e250: 69 6e 74 65 67 65 72 3e 20 5b 4c 50 20 4f 46 46  integer> [LP OFF
e260: 53 45 54 20 7c 20 2c 20 52 50 20 3c 69 6e 74 65  SET | , RP <inte
e270: 67 65 72 3e 5d 5d 0a 7d 20 7b 72 65 73 75 6c 74  ger>]].} {result
e280: 7d 20 7b 0a 3c 72 65 73 75 6c 74 2d 63 6f 6c 75  } {.<result-colu
e290: 6d 6e 3e 20 5b 2c 20 3c 72 65 73 75 6c 74 2d 63  mn> [, <result-c
e2a0: 6f 6c 75 6d 6e 3e 5d 2a 0a 7d 20 7b 72 65 73 75  olumn>]*.} {resu
e2b0: 6c 74 2d 63 6f 6c 75 6d 6e 7d 20 7b 0a 53 54 41  lt-column} {.STA
e2c0: 52 20 7c 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e  R | <table-name>
e2d0: 20 2e 20 53 54 41 52 20 7c 20 3c 65 78 70 72 3e   . STAR | <expr>
e2e0: 20 5b 20 5b 41 53 5d 20 3c 73 74 72 69 6e 67 3e   [ [AS] <string>
e2f0: 20 5d 0a 7d 20 7b 74 61 62 6c 65 2d 6c 69 73 74   ].} {table-list
e300: 7d 20 7b 0a 3c 74 61 62 6c 65 3e 20 5b 3c 6a 6f  } {.<table> [<jo
e310: 69 6e 2d 6f 70 3e 20 3c 74 61 62 6c 65 3e 20 3c  in-op> <table> <
e320: 6a 6f 69 6e 2d 61 72 67 73 3e 5d 2a 0a 7d 20 7b  join-args>]*.} {
e330: 74 61 62 6c 65 7d 20 7b 0a 3c 74 61 62 6c 65 2d  table} {.<table-
e340: 6e 61 6d 65 3e 20 5b 41 53 20 3c 61 6c 69 61 73  name> [AS <alias
e350: 3e 5d 20 7c 0a 28 20 3c 73 65 6c 65 63 74 3e 20  >] |.( <select> 
e360: 29 20 5b 41 53 20 3c 61 6c 69 61 73 3e 5d 0a 7d  ) [AS <alias>].}
e370: 20 7b 6a 6f 69 6e 2d 6f 70 7d 20 7b 0a 2c 20 7c   {join-op} {., |
e380: 20 5b 4e 41 54 55 52 41 4c 5d 20 5b 4c 45 46 54   [NATURAL] [LEFT
e390: 20 7c 20 52 49 47 48 54 20 7c 20 46 55 4c 4c 5d   | RIGHT | FULL]
e3a0: 20 5b 4f 55 54 45 52 20 7c 20 49 4e 4e 45 52 20   [OUTER | INNER 
e3b0: 7c 20 43 52 4f 53 53 5d 20 4a 4f 49 4e 0a 7d 20  | CROSS] JOIN.} 
e3c0: 7b 6a 6f 69 6e 2d 61 72 67 73 7d 20 7b 0a 5b 4f  {join-args} {.[O
e3d0: 4e 20 3c 65 78 70 72 3e 5d 20 5b 55 53 49 4e 47  N <expr>] [USING
e3e0: 20 28 20 3c 69 64 2d 6c 69 73 74 3e 20 29 5d 0a   ( <id-list> )].
e3f0: 7d 20 7b 73 6f 72 74 2d 65 78 70 72 2d 6c 69 73  } {sort-expr-lis
e400: 74 7d 20 7b 0a 3c 65 78 70 72 3e 20 5b 3c 73 6f  t} {.<expr> [<so
e410: 72 74 2d 6f 72 64 65 72 3e 5d 20 5b 2c 20 3c 65  rt-order>] [, <e
e420: 78 70 72 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65  xpr> [<sort-orde
e430: 72 3e 5d 5d 2a 0a 7d 20 7b 73 6f 72 74 2d 6f 72  r>]]*.} {sort-or
e440: 64 65 72 7d 20 7b 0a 5b 20 43 4f 4c 4c 41 54 45  der} {.[ COLLATE
e450: 20 3c 63 6f 6c 6c 61 74 69 6f 6e 2d 6e 61 6d 65   <collation-name
e460: 3e 20 5d 20 5b 20 41 53 43 20 7c 20 44 45 53 43  > ] [ ASC | DESC
e470: 20 5d 0a 7d 20 7b 63 6f 6d 70 6f 75 6e 64 5f 6f   ].} {compound_o
e480: 70 7d 20 7b 0a 55 4e 49 4f 4e 20 7c 20 55 4e 49  p} {.UNION | UNI
e490: 4f 4e 20 41 4c 4c 20 7c 20 49 4e 54 45 52 53 45  ON ALL | INTERSE
e4a0: 43 54 20 7c 20 45 58 43 45 50 54 0a 7d 0a 0a 70  CT | EXCEPT.}..p
e4b0: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53 45 4c  uts {.<p>The SEL
e4c0: 45 43 54 20 73 74 61 74 65 6d 65 6e 74 20 69 73  ECT statement is
e4d0: 20 75 73 65 64 20 74 6f 20 71 75 65 72 79 20 74   used to query t
e4e0: 68 65 20 64 61 74 61 62 61 73 65 2e 20 20 54 68  he database.  Th
e4f0: 65 0a 72 65 73 75 6c 74 20 6f 66 20 61 20 53 45  e.result of a SE
e500: 4c 45 43 54 20 69 73 20 7a 65 72 6f 20 6f 72 20  LECT is zero or 
e510: 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 64 61 74  more rows of dat
e520: 61 20 77 68 65 72 65 20 65 61 63 68 20 72 6f 77  a where each row
e530: 0a 68 61 73 20 61 20 66 69 78 65 64 20 6e 75 6d  .has a fixed num
e540: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 2e 20  ber of columns. 
e550: 20 54 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63   The number of c
e560: 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 0a 72 65  olumns in the.re
e570: 73 75 6c 74 20 69 73 20 73 70 65 63 69 66 69 65  sult is specifie
e580: 64 20 62 79 20 74 68 65 20 65 78 70 72 65 73 73  d by the express
e590: 69 6f 6e 20 6c 69 73 74 20 69 6e 20 62 65 74 77  ion list in betw
e5a0: 65 65 6e 20 74 68 65 0a 53 45 4c 45 43 54 20 61  een the.SELECT a
e5b0: 6e 64 20 46 52 4f 4d 20 6b 65 79 77 6f 72 64 73  nd FROM keywords
e5c0: 2e 20 20 41 6e 79 20 61 72 62 69 74 72 61 72 79  .  Any arbitrary
e5d0: 20 65 78 70 72 65 73 73 69 6f 6e 20 63 61 6e 20   expression can 
e5e0: 62 65 20 75 73 65 64 0a 61 73 20 61 20 72 65 73  be used.as a res
e5f0: 75 6c 74 2e 20 20 49 66 20 61 20 72 65 73 75 6c  ult.  If a resul
e600: 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20  t expression is 
e610: 7d 0a 70 75 74 73 20 22 5b 4f 70 65 72 61 74 6f  }.puts "[Operato
e620: 72 20 2a 5d 20 74 68 65 6e 20 61 6c 6c 20 63 6f  r *] then all co
e630: 6c 75 6d 6e 73 20 6f 66 20 61 6c 6c 20 74 61 62  lumns of all tab
e640: 6c 65 73 20 61 72 65 20 73 75 62 73 74 69 74 75  les are substitu
e650: 74 65 64 22 0a 70 75 74 73 20 7b 66 6f 72 20 74  ted".puts {for t
e660: 68 61 74 20 6f 6e 65 20 65 78 70 72 65 73 73 69  hat one expressi
e670: 6f 6e 2e 20 20 49 66 20 74 68 65 20 65 78 70 72  on.  If the expr
e680: 65 73 73 69 6f 6e 20 69 73 20 74 68 65 20 6e 61  ession is the na
e690: 6d 65 20 6f 66 7d 0a 70 75 74 73 20 22 61 20 74  me of}.puts "a t
e6a0: 61 62 6c 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  able followed by
e6b0: 20 5b 4f 70 65 72 61 74 6f 72 20 2e 2a 5d 20 74   [Operator .*] t
e6c0: 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 20 69  hen the result i
e6d0: 73 20 61 6c 6c 20 63 6f 6c 75 6d 6e 73 22 0a 70  s all columns".p
e6e0: 75 74 73 20 7b 69 6e 20 74 68 61 74 20 6f 6e 65  uts {in that one
e6f0: 20 74 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e   table.</p>..<p>
e700: 54 68 65 20 44 49 53 54 49 4e 43 54 20 6b 65 79  The DISTINCT key
e710: 77 6f 72 64 20 63 61 75 73 65 73 20 61 20 73 75  word causes a su
e720: 62 73 65 74 20 6f 66 20 72 65 73 75 6c 74 20 72  bset of result r
e730: 6f 77 73 20 74 6f 20 62 65 20 72 65 74 75 72 6e  ows to be return
e740: 65 64 2c 20 0a 69 6e 20 77 68 69 63 68 20 65 61  ed, .in which ea
e750: 63 68 20 72 65 73 75 6c 74 20 72 6f 77 20 69 73  ch result row is
e760: 20 64 69 66 66 65 72 65 6e 74 2e 20 20 4e 55 4c   different.  NUL
e770: 4c 20 76 61 6c 75 65 73 20 61 72 65 20 6e 6f 74  L values are not
e780: 20 74 72 65 61 74 65 64 20 61 73 20 0a 64 69 73   treated as .dis
e790: 74 69 6e 63 74 20 66 72 6f 6d 20 65 61 63 68 6f  tinct from eacho
e7a0: 74 68 65 72 2e 20 20 54 68 65 20 64 65 66 61 75  ther.  The defau
e7b0: 6c 74 20 62 65 68 61 76 69 6f 72 20 69 73 20 74  lt behavior is t
e7c0: 68 61 74 20 61 6c 6c 20 72 65 73 75 6c 74 20 72  hat all result r
e7d0: 6f 77 73 20 0a 62 65 20 72 65 74 75 72 6e 65 64  ows .be returned
e7e0: 2c 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 6d  , which can be m
e7f0: 61 64 65 20 65 78 70 6c 69 63 69 74 20 77 69 74  ade explicit wit
e800: 68 20 74 68 65 20 6b 65 79 77 6f 72 64 20 41 4c  h the keyword AL
e810: 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 71  L.</p>..<p>The q
e820: 75 65 72 79 20 69 73 20 65 78 65 63 75 74 65 64  uery is executed
e830: 20 61 67 61 69 6e 73 74 20 6f 6e 65 20 6f 72 20   against one or 
e840: 6d 6f 72 65 20 74 61 62 6c 65 73 20 73 70 65 63  more tables spec
e850: 69 66 69 65 64 20 61 66 74 65 72 0a 74 68 65 20  ified after.the 
e860: 46 52 4f 4d 20 6b 65 79 77 6f 72 64 2e 20 20 49  FROM keyword.  I
e870: 66 20 6d 75 6c 74 69 70 6c 65 20 74 61 62 6c 65  f multiple table
e880: 73 20 6e 61 6d 65 73 20 61 72 65 20 73 65 70 61  s names are sepa
e890: 72 61 74 65 64 20 62 79 20 63 6f 6d 6d 61 73 2c  rated by commas,
e8a0: 0a 74 68 65 6e 20 74 68 65 20 71 75 65 72 79 20  .then the query 
e8b0: 69 73 20 61 67 61 69 6e 73 74 20 74 68 65 20 63  is against the c
e8c0: 72 6f 73 73 20 6a 6f 69 6e 20 6f 66 20 74 68 65  ross join of the
e8d0: 20 76 61 72 69 6f 75 73 20 74 61 62 6c 65 73 2e   various tables.
e8e0: 0a 54 68 65 20 66 75 6c 6c 20 53 51 4c 2d 39 32  .The full SQL-92
e8f0: 20 6a 6f 69 6e 20 73 79 6e 74 61 78 20 63 61 6e   join syntax can
e900: 20 61 6c 73 6f 20 62 65 20 75 73 65 64 20 74 6f   also be used to
e910: 20 73 70 65 63 69 66 79 20 6a 6f 69 6e 73 2e 0a   specify joins..
e920: 41 20 73 75 62 2d 71 75 65 72 79 0a 69 6e 20 70  A sub-query.in p
e930: 61 72 65 6e 74 68 65 73 65 73 20 6d 61 79 20 62  arentheses may b
e940: 65 20 73 75 62 73 74 69 74 75 74 65 64 20 66 6f  e substituted fo
e950: 72 20 61 6e 79 20 74 61 62 6c 65 20 6e 61 6d 65  r any table name
e960: 20 69 6e 20 74 68 65 20 46 52 4f 4d 20 63 6c 61   in the FROM cla
e970: 75 73 65 2e 0a 54 68 65 20 65 6e 74 69 72 65 20  use..The entire 
e980: 46 52 4f 4d 20 63 6c 61 75 73 65 20 6d 61 79 20  FROM clause may 
e990: 62 65 20 6f 6d 69 74 74 65 64 2c 20 69 6e 20 77  be omitted, in w
e9a0: 68 69 63 68 20 63 61 73 65 20 74 68 65 20 72 65  hich case the re
e9b0: 73 75 6c 74 20 69 73 20 61 0a 73 69 6e 67 6c 65  sult is a.single
e9c0: 20 72 6f 77 20 63 6f 6e 73 69 73 74 69 6e 67 20   row consisting 
e9d0: 6f 66 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66  of the values of
e9e0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20   the expression 
e9f0: 6c 69 73 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54  list..</p>..<p>T
ea00: 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  he WHERE clause 
ea10: 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 6c  can be used to l
ea20: 69 6d 69 74 20 74 68 65 20 6e 75 6d 62 65 72 20  imit the number 
ea30: 6f 66 20 72 6f 77 73 20 6f 76 65 72 0a 77 68 69  of rows over.whi
ea40: 63 68 20 74 68 65 20 71 75 65 72 79 20 6f 70 65  ch the query ope
ea50: 72 61 74 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  rates.</p>..<p>T
ea60: 68 65 20 47 52 4f 55 50 20 42 59 20 63 6c 61 75  he GROUP BY clau
ea70: 73 65 73 20 63 61 75 73 65 73 20 6f 6e 65 20 6f  ses causes one o
ea80: 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 74  r more rows of t
ea90: 68 65 20 72 65 73 75 6c 74 20 74 6f 0a 62 65 20  he result to.be 
eaa0: 63 6f 6d 62 69 6e 65 64 20 69 6e 74 6f 20 61 20  combined into a 
eab0: 73 69 6e 67 6c 65 20 72 6f 77 20 6f 66 20 6f 75  single row of ou
eac0: 74 70 75 74 2e 20 20 54 68 69 73 20 69 73 20 65  tput.  This is e
ead0: 73 70 65 63 69 61 6c 6c 79 20 75 73 65 66 75 6c  specially useful
eae0: 0a 77 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74  .when the result
eaf0: 20 63 6f 6e 74 61 69 6e 73 20 61 67 67 72 65 67   contains aggreg
eb00: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20  ate functions.  
eb10: 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20  The expressions 
eb20: 69 6e 0a 74 68 65 20 47 52 4f 55 50 20 42 59 20  in.the GROUP BY 
eb30: 63 6c 61 75 73 65 20 64 6f 20 3c 65 6d 3e 6e 6f  clause do <em>no
eb40: 74 3c 2f 65 6d 3e 20 68 61 76 65 20 74 6f 20 62  t</em> have to b
eb50: 65 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  e expressions th
eb60: 61 74 0a 61 70 70 65 61 72 20 69 6e 20 74 68 65  at.appear in the
eb70: 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20 48 41   result.  The HA
eb80: 56 49 4e 47 20 63 6c 61 75 73 65 20 69 73 20 73  VING clause is s
eb90: 69 6d 69 6c 61 72 20 74 6f 20 57 48 45 52 45 20  imilar to WHERE 
eba0: 65 78 63 65 70 74 0a 74 68 61 74 20 48 41 56 49  except.that HAVI
ebb0: 4e 47 20 61 70 70 6c 69 65 73 20 61 66 74 65 72  NG applies after
ebc0: 20 67 72 6f 75 70 69 6e 67 20 68 61 73 20 6f 63   grouping has oc
ebd0: 63 75 72 72 65 64 2e 20 20 54 68 65 20 48 41 56  curred.  The HAV
ebe0: 49 4e 47 20 65 78 70 72 65 73 73 69 6f 6e 0a 6d  ING expression.m
ebf0: 61 79 20 72 65 66 65 72 20 74 6f 20 76 61 6c 75  ay refer to valu
ec00: 65 73 2c 20 65 76 65 6e 20 61 67 67 72 65 67 61  es, even aggrega
ec10: 74 65 20 66 75 6e 63 74 69 6f 6e 73 2c 20 74 68  te functions, th
ec20: 61 74 20 61 72 65 20 6e 6f 74 20 69 6e 20 74 68  at are not in th
ec30: 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c  e result.</p>..<
ec40: 70 3e 54 68 65 20 4f 52 44 45 52 20 42 59 20 63  p>The ORDER BY c
ec50: 6c 61 75 73 65 20 63 61 75 73 65 73 20 74 68 65  lause causes the
ec60: 20 6f 75 74 70 75 74 20 72 6f 77 73 20 74 6f 20   output rows to 
ec70: 62 65 20 73 6f 72 74 65 64 2e 20 20 0a 54 68 65  be sorted.  .The
ec80: 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 4f 52 44   argument to ORD
ec90: 45 52 20 42 59 20 69 73 20 61 20 6c 69 73 74 20  ER BY is a list 
eca0: 6f 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74  of expressions t
ecb0: 68 61 74 20 61 72 65 20 75 73 65 64 20 61 73 20  hat are used as 
ecc0: 74 68 65 0a 6b 65 79 20 66 6f 72 20 74 68 65 20  the.key for the 
ecd0: 73 6f 72 74 2e 20 20 54 68 65 20 65 78 70 72 65  sort.  The expre
ece0: 73 73 69 6f 6e 73 20 64 6f 20 6e 6f 74 20 68 61  ssions do not ha
ecf0: 76 65 20 74 6f 20 62 65 20 70 61 72 74 20 6f 66  ve to be part of
ed00: 20 74 68 65 0a 72 65 73 75 6c 74 20 66 6f 72 20   the.result for 
ed10: 61 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 2c  a simple SELECT,
ed20: 20 62 75 74 20 69 6e 20 61 20 63 6f 6d 70 6f 75   but in a compou
ed30: 6e 64 20 53 45 4c 45 43 54 20 65 61 63 68 20 73  nd SELECT each s
ed40: 6f 72 74 0a 65 78 70 72 65 73 73 69 6f 6e 20 6d  ort.expression m
ed50: 75 73 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63  ust exactly matc
ed60: 68 20 6f 6e 65 20 6f 66 20 74 68 65 20 72 65 73  h one of the res
ed70: 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 45 61  ult columns.  Ea
ed80: 63 68 0a 73 6f 72 74 20 65 78 70 72 65 73 73 69  ch.sort expressi
ed90: 6f 6e 20 6d 61 79 20 62 65 20 6f 70 74 69 6f 6e  on may be option
eda0: 61 6c 6c 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79  ally followed by
edb0: 20 61 20 43 4f 4c 4c 41 54 45 20 6b 65 79 77 6f   a COLLATE keywo
edc0: 72 64 20 61 6e 64 0a 74 68 65 20 6e 61 6d 65 20  rd and.the name 
edd0: 6f 66 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20 66  of a collating f
ede0: 75 6e 63 74 69 6f 6e 20 75 73 65 64 20 66 6f 72  unction used for
edf0: 20 6f 72 64 65 72 69 6e 67 20 74 65 78 74 20 61   ordering text a
ee00: 6e 64 2f 6f 72 0a 6b 65 79 77 6f 72 64 73 20 41  nd/or.keywords A
ee10: 53 43 20 6f 72 20 44 45 53 43 20 74 6f 20 73 70  SC or DESC to sp
ee20: 65 63 69 66 79 20 74 68 65 20 73 6f 72 74 20 6f  ecify the sort o
ee30: 72 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68  rder.</p>..<p>Th
ee40: 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 70  e LIMIT clause p
ee50: 6c 61 63 65 73 20 61 6e 20 75 70 70 65 72 20 62  laces an upper b
ee60: 6f 75 6e 64 20 6f 6e 20 74 68 65 20 6e 75 6d 62  ound on the numb
ee70: 65 72 20 6f 66 20 72 6f 77 73 0a 72 65 74 75 72  er of rows.retur
ee80: 6e 65 64 20 69 6e 20 74 68 65 20 72 65 73 75 6c  ned in the resul
ee90: 74 2e 20 20 41 20 6e 65 67 61 74 69 76 65 20 4c  t.  A negative L
eea0: 49 4d 49 54 20 69 6e 64 69 63 61 74 65 73 20 6e  IMIT indicates n
eeb0: 6f 20 75 70 70 65 72 20 62 6f 75 6e 64 2e 0a 54  o upper bound..T
eec0: 68 65 20 6f 70 74 69 6f 6e 61 6c 20 4f 46 46 53  he optional OFFS
eed0: 45 54 20 66 6f 6c 6c 6f 77 69 6e 67 20 4c 49 4d  ET following LIM
eee0: 49 54 20 73 70 65 63 69 66 69 65 73 20 68 6f 77  IT specifies how
eef0: 20 6d 61 6e 79 0a 72 6f 77 73 20 74 6f 20 73 6b   many.rows to sk
ef00: 69 70 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e  ip at the beginn
ef10: 69 6e 67 20 6f 66 20 74 68 65 20 72 65 73 75 6c  ing of the resul
ef20: 74 20 73 65 74 2e 0a 49 6e 20 61 20 63 6f 6d 70  t set..In a comp
ef30: 6f 75 6e 64 20 71 75 65 72 79 2c 20 74 68 65 20  ound query, the 
ef40: 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 6d 61 79  LIMIT clause may
ef50: 20 6f 6e 6c 79 20 61 70 70 65 61 72 20 6f 6e 20   only appear on 
ef60: 74 68 65 0a 66 69 6e 61 6c 20 53 45 4c 45 43 54  the.final SELECT
ef70: 20 73 74 61 74 65 6d 65 6e 74 2e 0a 54 68 65 20   statement..The 
ef80: 6c 69 6d 69 74 20 69 73 20 61 70 70 6c 69 65 64  limit is applied
ef90: 20 74 6f 20 74 68 65 20 65 6e 74 69 72 65 20 71   to the entire q
efa0: 75 65 72 79 20 6e 6f 74 0a 74 6f 20 74 68 65 20  uery not.to the 
efb0: 69 6e 64 69 76 69 64 75 61 6c 20 53 45 4c 45 43  individual SELEC
efc0: 54 20 73 74 61 74 65 6d 65 6e 74 20 74 6f 20 77  T statement to w
efd0: 68 69 63 68 20 69 74 20 69 73 20 61 74 74 61 63  hich it is attac
efe0: 68 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 41 20  hed..</p>..<p>A 
eff0: 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20  compound SELECT 
f000: 69 73 20 66 6f 72 6d 65 64 20 66 72 6f 6d 20 74  is formed from t
f010: 77 6f 20 6f 72 20 6d 6f 72 65 20 73 69 6d 70 6c  wo or more simpl
f020: 65 20 53 45 4c 45 43 54 73 20 63 6f 6e 6e 65 63  e SELECTs connec
f030: 74 65 64 0a 62 79 20 6f 6e 65 20 6f 66 20 74 68  ted.by one of th
f040: 65 20 6f 70 65 72 61 74 6f 72 73 20 55 4e 49 4f  e operators UNIO
f050: 4e 2c 20 55 4e 49 4f 4e 20 41 4c 4c 2c 20 49 4e  N, UNION ALL, IN
f060: 54 45 52 53 45 43 54 2c 20 6f 72 20 45 58 43 45  TERSECT, or EXCE
f070: 50 54 2e 20 20 49 6e 0a 61 20 63 6f 6d 70 6f 75  PT.  In.a compou
f080: 6e 64 20 53 45 4c 45 43 54 2c 20 61 6c 6c 20 74  nd SELECT, all t
f090: 68 65 20 63 6f 6e 73 74 69 74 75 65 6e 74 20 53  he constituent S
f0a0: 45 4c 45 43 54 73 20 6d 75 73 74 20 73 70 65 63  ELECTs must spec
f0b0: 69 66 79 20 74 68 65 0a 73 61 6d 65 20 6e 75 6d  ify the.same num
f0c0: 62 65 72 20 6f 66 20 72 65 73 75 6c 74 20 63 6f  ber of result co
f0d0: 6c 75 6d 6e 73 2e 20 20 54 68 65 72 65 20 6d 61  lumns.  There ma
f0e0: 79 20 62 65 20 6f 6e 6c 79 20 61 20 73 69 6e 67  y be only a sing
f0f0: 6c 65 20 4f 52 44 45 52 20 42 59 0a 63 6c 61 75  le ORDER BY.clau
f100: 73 65 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66  se at the end of
f110: 20 74 68 65 20 63 6f 6d 70 6f 75 6e 64 20 53 45   the compound SE
f120: 4c 45 43 54 2e 20 20 54 68 65 20 55 4e 49 4f 4e  LECT.  The UNION
f130: 20 61 6e 64 20 55 4e 49 4f 4e 20 41 4c 4c 0a 6f   and UNION ALL.o
f140: 70 65 72 61 74 6f 72 73 20 63 6f 6d 62 69 6e 65  perators combine
f150: 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20   the results of 
f160: 74 68 65 20 53 45 4c 45 43 54 73 20 74 6f 20 74  the SELECTs to t
f170: 68 65 20 72 69 67 68 74 20 61 6e 64 20 6c 65 66  he right and lef
f180: 74 20 69 6e 74 6f 0a 61 20 73 69 6e 67 6c 65 20  t into.a single 
f190: 62 69 67 20 74 61 62 6c 65 2e 20 20 54 68 65 20  big table.  The 
f1a0: 64 69 66 66 65 72 65 6e 63 65 20 69 73 20 74 68  difference is th
f1b0: 61 74 20 69 6e 20 55 4e 49 4f 4e 20 61 6c 6c 20  at in UNION all 
f1c0: 72 65 73 75 6c 74 20 72 6f 77 73 0a 61 72 65 20  result rows.are 
f1d0: 64 69 73 74 69 6e 63 74 20 77 68 65 72 65 20 69  distinct where i
f1e0: 6e 20 55 4e 49 4f 4e 20 41 4c 4c 20 74 68 65 72  n UNION ALL ther
f1f0: 65 20 6d 61 79 20 62 65 20 64 75 70 6c 69 63 61  e may be duplica
f200: 74 65 73 2e 0a 54 68 65 20 49 4e 54 45 52 53 45  tes..The INTERSE
f210: 43 54 20 6f 70 65 72 61 74 6f 72 20 74 61 6b 65  CT operator take
f220: 73 20 74 68 65 20 69 6e 74 65 72 73 65 63 74 69  s the intersecti
f230: 6f 6e 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74  on of the result
f240: 73 20 6f 66 20 74 68 65 0a 6c 65 66 74 20 61 6e  s of the.left an
f250: 64 20 72 69 67 68 74 20 53 45 4c 45 43 54 73 2e  d right SELECTs.
f260: 20 20 45 58 43 45 50 54 20 74 61 6b 65 73 20 74    EXCEPT takes t
f270: 68 65 20 72 65 73 75 6c 74 20 6f 66 20 6c 65 66  he result of lef
f280: 74 20 53 45 4c 45 43 54 20 61 66 74 65 72 0a 72  t SELECT after.r
f290: 65 6d 6f 76 69 6e 67 20 74 68 65 20 72 65 73 75  emoving the resu
f2a0: 6c 74 73 20 6f 66 20 74 68 65 20 72 69 67 68 74  lts of the right
f2b0: 20 53 45 4c 45 43 54 2e 20 20 57 68 65 6e 20 74   SELECT.  When t
f2c0: 68 72 65 65 20 61 72 65 20 6d 6f 72 65 20 53 45  hree are more SE
f2d0: 4c 45 43 54 73 0a 61 72 65 20 63 6f 6e 6e 65 63  LECTs.are connec
f2e0: 74 65 64 20 69 6e 74 6f 20 61 20 63 6f 6d 70 6f  ted into a compo
f2f0: 75 6e 64 2c 20 74 68 65 79 20 67 72 6f 75 70 20  und, they group 
f300: 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72 69 67  from left to rig
f310: 68 74 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  ht.</p>.}...Sect
f320: 69 6f 6e 20 55 50 44 41 54 45 20 75 70 64 61 74  ion UPDATE updat
f330: 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  e..Syntax {sql-s
f340: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 55 50 44 41  tatement} {.UPDA
f350: 54 45 20 5b 20 4f 52 20 3c 63 6f 6e 66 6c 69 63  TE [ OR <conflic
f360: 74 2d 61 6c 67 6f 72 69 74 68 6d 3e 20 5d 20 5b  t-algorithm> ] [
f370: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
f380: 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 0a  .] <table-name>.
f390: 53 45 54 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e  SET <assignment>
f3a0: 20 5b 2c 20 3c 61 73 73 69 67 6e 6d 65 6e 74 3e   [, <assignment>
f3b0: 5d 2a 0a 5b 57 48 45 52 45 20 3c 65 78 70 72 3e  ]*.[WHERE <expr>
f3c0: 5d 0a 7d 20 7b 61 73 73 69 67 6e 6d 65 6e 74 7d  ].} {assignment}
f3d0: 20 7b 0a 3c 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3e   {.<column-name>
f3e0: 20 3d 20 3c 65 78 70 72 3e 0a 7d 0a 0a 70 75 74   = <expr>.}..put
f3f0: 73 20 7b 0a 3c 70 3e 54 68 65 20 55 50 44 41 54  s {.<p>The UPDAT
f400: 45 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75  E statement is u
f410: 73 65 64 20 74 6f 20 63 68 61 6e 67 65 20 74 68  sed to change th
f420: 65 20 76 61 6c 75 65 20 6f 66 20 63 6f 6c 75 6d  e value of colum
f430: 6e 73 20 69 6e 20 0a 73 65 6c 65 63 74 65 64 20  ns in .selected 
f440: 72 6f 77 73 20 6f 66 20 61 20 74 61 62 6c 65 2e  rows of a table.
f450: 20 20 45 61 63 68 20 61 73 73 69 67 6e 6d 65 6e    Each assignmen
f460: 74 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20 73  t in an UPDATE s
f470: 70 65 63 69 66 69 65 73 0a 61 20 63 6f 6c 75 6d  pecifies.a colum
f480: 6e 20 6e 61 6d 65 20 74 6f 20 74 68 65 20 6c 65  n name to the le
f490: 66 74 20 6f 66 20 74 68 65 20 65 71 75 61 6c 73  ft of the equals
f4a0: 20 73 69 67 6e 20 61 6e 64 20 61 6e 20 61 72 62   sign and an arb
f4b0: 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f  itrary expressio
f4c0: 6e 0a 74 6f 20 74 68 65 20 72 69 67 68 74 2e 20  n.to the right. 
f4d0: 20 54 68 65 20 65 78 70 72 65 73 73 69 6f 6e 73   The expressions
f4e0: 20 6d 61 79 20 75 73 65 20 74 68 65 20 76 61 6c   may use the val
f4f0: 75 65 73 20 6f 66 20 6f 74 68 65 72 20 63 6f 6c  ues of other col
f500: 75 6d 6e 73 2e 0a 41 6c 6c 20 65 78 70 72 65 73  umns..All expres
f510: 73 69 6f 6e 73 20 61 72 65 20 65 76 61 6c 75 61  sions are evalua
f520: 74 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20 61  ted before any a
f530: 73 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d  ssignments are m
f540: 61 64 65 2e 0a 41 20 57 48 45 52 45 20 63 6c 61  ade..A WHERE cla
f550: 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 20  use can be used 
f560: 74 6f 20 72 65 73 74 72 69 63 74 20 77 68 69 63  to restrict whic
f570: 68 20 72 6f 77 73 20 61 72 65 20 75 70 64 61 74  h rows are updat
f580: 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  ed.</p>..<p>The 
f590: 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69 63  optional conflic
f5a0: 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73 20  t-clause allows 
f5b0: 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69 6f  the specificatio
f5c0: 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61 74  n of an alternat
f5d0: 69 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63  ive.constraint c
f5e0: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
f5f0: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 74 6f 20  on algorithm to 
f600: 75 73 65 20 64 75 72 69 6e 67 20 74 68 69 73 20  use during this 
f610: 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53 65 65  one command..See
f620: 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74   the section tit
f630: 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f  led.<a href="#co
f640: 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c  nflict">ON CONFL
f650: 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69  ICT</a> for addi
f660: 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69  tional informati
f670: 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74  on.</p>.}...Sect
f680: 69 6f 6e 20 56 41 43 55 55 4d 20 76 61 63 75 75  ion VACUUM vacuu
f690: 6d 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73  m..Syntax {sql-s
f6a0: 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 56 41 43 55  tatement} {.VACU
f6b0: 55 4d 20 5b 3c 69 6e 64 65 78 2d 6f 72 2d 74 61  UM [<index-or-ta
f6c0: 62 6c 65 2d 6e 61 6d 65 3e 5d 0a 7d 0a 0a 70 75  ble-name>].}..pu
f6d0: 74 73 20 7b 0a 3c 70 3e 54 68 65 20 56 41 43 55  ts {.<p>The VACU
f6e0: 55 4d 20 63 6f 6d 6d 61 6e 64 20 69 73 20 61 6e  UM command is an
f6f0: 20 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69 6f   SQLite extensio
f700: 6e 20 6d 6f 64 65 6c 6c 65 64 20 61 66 74 65 72  n modelled after
f710: 20 61 20 73 69 6d 69 6c 61 72 0a 63 6f 6d 6d 61   a similar.comma
f720: 6e 64 20 66 6f 75 6e 64 20 69 6e 20 50 6f 73 74  nd found in Post
f730: 67 72 65 53 51 4c 2e 20 20 49 66 20 56 41 43 55  greSQL.  If VACU
f740: 55 4d 20 69 73 20 69 6e 76 6f 6b 65 64 20 77 69  UM is invoked wi
f750: 74 68 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  th the name of a
f760: 0a 74 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 20  .table or index 
f770: 74 68 65 6e 20 69 74 20 69 73 20 73 75 70 70 6f  then it is suppo
f780: 73 65 20 74 6f 20 63 6c 65 61 6e 20 75 70 20 74  se to clean up t
f790: 68 65 20 6e 61 6d 65 64 20 74 61 62 6c 65 20 6f  he named table o
f7a0: 72 20 69 6e 64 65 78 2e 0a 49 6e 20 76 65 72 73  r index..In vers
f7b0: 69 6f 6e 20 31 2e 30 20 6f 66 20 53 51 4c 69 74  ion 1.0 of SQLit
f7c0: 65 2c 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f  e, the VACUUM co
f7d0: 6d 6d 61 6e 64 20 77 6f 75 6c 64 20 69 6e 76 6f  mmand would invo
f7e0: 6b 65 20 0a 3c 62 3e 67 64 62 6d 5f 72 65 6f 72  ke .<b>gdbm_reor
f7f0: 67 61 6e 69 7a 65 28 29 3c 2f 62 3e 20 74 6f 20  ganize()</b> to 
f800: 63 6c 65 61 6e 20 75 70 20 74 68 65 20 62 61 63  clean up the bac
f810: 6b 65 6e 64 20 64 61 74 61 62 61 73 65 20 66 69  kend database fi
f820: 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 56 41 43  le.</p>..<p>.VAC
f830: 55 55 4d 20 62 65 63 61 6d 65 20 61 20 6e 6f 2d  UUM became a no-
f840: 6f 70 20 77 68 65 6e 20 74 68 65 20 47 44 42 4d  op when the GDBM
f850: 20 62 61 63 6b 65 6e 64 20 77 61 73 20 72 65 6d   backend was rem
f860: 6f 76 65 64 20 66 72 6f 6d 0a 53 51 4c 49 54 45  oved from.SQLITE
f870: 20 69 6e 20 76 65 72 73 69 6f 6e 20 32 2e 30 2e   in version 2.0.
f880: 30 2e 0a 56 41 43 55 55 4d 20 77 61 73 20 72 65  0..VACUUM was re
f890: 69 6d 70 6c 69 6d 65 6e 74 65 64 20 69 6e 20 76  implimented in v
f8a0: 65 72 73 69 6f 6e 20 32 2e 38 2e 31 2e 0a 54 68  ersion 2.8.1..Th
f8b0: 65 20 69 6e 64 65 78 20 6f 72 20 74 61 62 6c 65  e index or table
f8c0: 20 6e 61 6d 65 20 61 72 67 75 6d 65 6e 74 20 69   name argument i
f8d0: 73 20 6e 6f 77 20 69 67 6e 6f 72 65 64 2e 0a 3c  s now ignored..<
f8e0: 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61 6e 20  /p>..<p>When an 
f8f0: 6f 62 6a 65 63 74 20 28 74 61 62 6c 65 2c 20 69  object (table, i
f900: 6e 64 65 78 2c 20 6f 72 20 74 72 69 67 67 65 72  ndex, or trigger
f910: 29 20 69 73 20 64 72 6f 70 70 65 64 20 66 72 6f  ) is dropped fro
f920: 6d 20 74 68 65 20 0a 64 61 74 61 62 61 73 65 2c  m the .database,
f930: 20 69 74 20 6c 65 61 76 65 73 20 62 65 68 69 6e   it leaves behin
f940: 64 20 65 6d 70 74 79 20 73 70 61 63 65 2e 20 20  d empty space.  
f950: 54 68 69 73 20 6d 61 6b 65 73 20 74 68 65 20 64  This makes the d
f960: 61 74 61 62 61 73 65 20 0a 66 69 6c 65 20 6c 61  atabase .file la
f970: 72 67 65 72 20 74 68 61 6e 20 69 74 20 6e 65 65  rger than it nee
f980: 64 73 20 74 6f 20 62 65 2c 20 62 75 74 20 63 61  ds to be, but ca
f990: 6e 20 73 70 65 65 64 20 75 70 20 69 6e 73 65 72  n speed up inser
f9a0: 74 73 2e 20 20 49 6e 20 74 69 6d 65 20 0a 69 6e  ts.  In time .in
f9b0: 73 65 72 74 73 20 61 6e 64 20 64 65 6c 65 74 65  serts and delete
f9c0: 73 20 63 61 6e 20 6c 65 61 76 65 20 74 68 65 20  s can leave the 
f9d0: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 73 74  database file st
f9e0: 72 75 63 74 75 72 65 20 66 72 61 67 6d 65 6e 74  ructure fragment
f9f0: 65 64 2c 20 0a 77 68 69 63 68 20 73 6c 6f 77 73  ed, .which slows
fa00: 20 64 6f 77 6e 20 64 69 73 6b 20 61 63 63 65 73   down disk acces
fa10: 73 20 74 6f 20 74 68 65 20 64 61 74 61 62 61 73  s to the databas
fa20: 65 20 63 6f 6e 74 65 6e 74 73 2e 0a 0a 54 68 65  e contents...The
fa30: 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20   VACUUM command 
fa40: 63 6c 65 61 6e 73 0a 74 68 65 20 6d 61 69 6e 20  cleans.the main 
fa50: 64 61 74 61 62 61 73 65 20 62 79 20 63 6f 70 79  database by copy
fa60: 69 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e 74 73  ing its contents
fa70: 20 74 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20   to a temporary 
fa80: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 61 6e  database file an
fa90: 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74 68 65  d .reloading the
faa0: 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 61 62 61   original databa
fab0: 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 65  se file from the
fac0: 20 63 6f 70 79 2e 20 20 54 68 69 73 20 65 6c 69   copy.  This eli
fad0: 6d 69 6e 61 74 65 73 20 0a 66 72 65 65 20 70 61  minates .free pa
fae0: 67 65 73 2c 20 20 61 6c 69 67 6e 73 20 74 61 62  ges,  aligns tab
faf0: 6c 65 20 64 61 74 61 20 74 6f 20 62 65 20 63 6f  le data to be co
fb00: 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64 20 6f 74  ntiguous, and ot
fb10: 68 65 72 77 69 73 65 20 63 6c 65 61 6e 73 20 0a  herwise cleans .
fb20: 75 70 20 74 68 65 20 64 61 74 61 62 61 73 65 20  up the database 
fb30: 66 69 6c 65 20 73 74 72 75 63 74 75 72 65 2e 20  file structure. 
fb40: 49 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69 62  It is not possib
fb50: 6c 65 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 68  le to perform th
fb60: 65 20 73 61 6d 65 0a 70 72 6f 63 65 73 73 20 6f  e same.process o
fb70: 6e 20 61 6e 20 61 74 74 61 63 68 65 64 20 64 61  n an attached da
fb80: 74 61 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e  tabase file.</p>
fb90: 0a 0a 3c 70 3e 54 68 69 73 20 63 6f 6d 6d 61 6e  ..<p>This comman
fba0: 64 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 74  d will fail if t
fbb0: 68 65 72 65 20 69 73 20 61 6e 20 61 63 74 69 76  here is an activ
fbc0: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 20 20  e transaction.  
fbd0: 54 68 69 73 20 0a 63 6f 6d 6d 61 6e 64 20 68 61  This .command ha
fbe0: 73 20 6e 6f 20 65 66 66 65 63 74 20 6f 6e 20 61  s no effect on a
fbf0: 6e 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61  n in-memory data
fc00: 62 61 73 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  base.</p>.}...Se
fc10: 63 74 69 6f 6e 20 7b 53 51 4c 69 74 65 20 6b 65  ction {SQLite ke
fc20: 79 77 6f 72 64 73 7d 20 6b 65 79 77 6f 72 64 73  ywords} keywords
fc30: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20  ..puts {.<p>The 
fc40: 66 6f 6c 6c 6f 77 69 6e 67 20 6b 65 79 77 6f 72  following keywor
fc50: 64 73 20 61 72 65 20 75 73 65 64 20 62 79 20 53  ds are used by S
fc60: 51 4c 69 74 65 2e 20 20 4d 6f 73 74 20 61 72 65  QLite.  Most are
fc70: 20 65 69 74 68 65 72 20 72 65 73 65 72 76 65 64   either reserved
fc80: 20 0a 77 6f 72 64 73 20 69 6e 20 53 51 4c 2d 39   .words in SQL-9
fc90: 32 20 6f 72 20 77 65 72 65 20 6c 69 73 74 65 64  2 or were listed
fca0: 20 61 73 20 70 6f 74 65 6e 74 69 61 6c 20 72 65   as potential re
fcb0: 73 65 72 76 65 64 20 77 6f 72 64 73 2e 20 20 54  served words.  T
fcc0: 68 6f 73 65 20 77 68 69 63 68 20 0a 61 72 65 6e  hose which .aren
fcd0: 27 74 20 61 72 65 20 73 68 6f 77 6e 20 69 6e 20  't are shown in 
fce0: 69 74 61 6c 69 63 73 2e 20 20 4e 6f 74 20 61 6c  italics.  Not al
fcf0: 6c 20 6f 66 20 74 68 65 73 65 20 77 6f 72 64 73  l of these words
fd00: 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 75 73   are actually us
fd10: 65 64 0a 62 79 20 53 51 4c 69 74 65 2e 20 20 4b  ed.by SQLite.  K
fd20: 65 79 77 6f 72 64 73 20 61 72 65 20 6e 6f 74 20  eywords are not 
fd30: 72 65 73 65 72 76 65 64 20 69 6e 20 53 51 4c 69  reserved in SQLi
fd40: 74 65 2e 20 20 41 6e 79 20 6b 65 79 77 6f 72 64  te.  Any keyword
fd50: 20 63 61 6e 20 62 65 20 75 73 65 64 20 0a 61 73   can be used .as
fd60: 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 20 66   an identifier f
fd70: 6f 72 20 53 51 4c 69 74 65 20 6f 62 6a 65 63 74  or SQLite object
fd80: 73 20 28 63 6f 6c 75 6d 6e 73 2c 20 64 61 74 61  s (columns, data
fd90: 62 61 73 65 73 2c 20 69 6e 64 65 78 65 73 2c 20  bases, indexes, 
fda0: 74 61 62 6c 65 73 2c 20 0a 74 72 69 67 67 65 72  tables, .trigger
fdb0: 73 2c 20 76 69 65 77 73 2c 20 2e 2e 2e 29 20 62  s, views, ...) b
fdc0: 75 74 20 6d 75 73 74 20 67 65 6e 65 72 61 6c 6c  ut must generall
fdd0: 79 20 62 65 20 65 6e 63 6c 6f 73 65 64 20 62 79  y be enclosed by
fde0: 20 62 72 61 63 6b 65 74 73 20 6f 72 20 0a 71 75   brackets or .qu
fdf0: 6f 74 65 73 20 74 6f 20 61 76 6f 69 64 20 63 6f  otes to avoid co
fe00: 6e 66 75 73 69 6e 67 20 74 68 65 20 70 61 72 73  nfusing the pars
fe10: 65 72 2e 20 20 4b 65 79 77 6f 72 64 20 6d 61 74  er.  Keyword mat
fe20: 63 68 69 6e 67 20 69 6e 20 53 51 4c 69 74 65 20  ching in SQLite 
fe30: 69 73 20 0a 63 61 73 65 2d 69 6e 73 65 6e 73 69  is .case-insensi
fe40: 74 69 76 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4b 65  tive.</p>..<p>Ke
fe50: 79 77 6f 72 64 73 20 63 61 6e 20 62 65 20 75 73  ywords can be us
fe60: 65 64 20 61 73 20 69 64 65 6e 74 69 66 69 65 72  ed as identifier
fe70: 73 20 69 6e 20 74 68 72 65 65 20 77 61 79 73 3a  s in three ways:
fe80: 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 3e 0a 3c 74  </p>..<table>.<t
fe90: 72 3e 09 3c 74 64 20 77 69 64 74 68 3d 31 32 25  r>.<td width=12%
fea0: 3e 20 27 6b 65 79 77 6f 72 64 27 0a 09 3c 74 64  > 'keyword'..<td
feb0: 3e 49 6e 74 65 72 70 72 65 74 65 64 20 61 73 20  >Interpreted as 
fec0: 61 20 6c 69 74 65 72 61 6c 20 73 74 72 69 6e 67  a literal string
fed0: 20 69 66 20 69 74 20 6f 63 63 75 72 73 20 69 6e   if it occurs in
fee0: 20 61 20 6c 65 67 61 6c 20 73 74 72 69 6e 67 20   a legal string 
fef0: 0a 09 63 6f 6e 74 65 78 74 2c 20 6f 74 68 65 72  ..context, other
ff00: 77 69 73 65 20 61 73 20 61 6e 20 69 64 65 6e 74  wise as an ident
ff10: 69 66 69 65 72 2e 0a 3c 74 72 3e 09 3c 74 64 3e  ifier..<tr>.<td>
ff20: 20 22 6b 65 79 77 6f 72 64 22 0a 09 3c 74 64 3e   "keyword"..<td>
ff30: 49 6e 74 65 72 70 72 65 74 65 64 20 61 73 20 61  Interpreted as a
ff40: 6e 20 69 64 65 6e 74 69 66 69 65 72 20 69 66 20  n identifier if 
ff50: 69 74 20 6d 61 74 63 68 65 73 20 61 20 6b 6e 6f  it matches a kno
ff60: 77 6e 20 69 64 65 6e 74 69 66 69 65 72 20 0a 09  wn identifier ..
ff70: 61 6e 64 20 6f 63 63 75 72 73 20 69 6e 20 61 20  and occurs in a 
ff80: 6c 65 67 61 6c 20 69 64 65 6e 74 69 66 69 65 72  legal identifier
ff90: 20 63 6f 6e 74 65 78 74 2c 20 6f 74 68 65 72 77   context, otherw
ffa0: 69 73 65 20 61 73 20 61 20 73 74 72 69 6e 67 2e  ise as a string.
ffb0: 20 0a 3c 74 72 3e 09 3c 74 64 3e 20 5b 6b 65 79   .<tr>.<td> [key
ffc0: 77 6f 72 64 5d 0a 09 3c 74 64 3e 20 41 6c 77 61  word]..<td> Alwa
ffd0: 79 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  ys interpreted a
ffe0: 73 20 61 6e 20 69 64 65 6e 74 69 66 65 72 2e 20  s an identifer. 
fff0: 28 54 68 69 73 20 6e 6f 74 61 74 69 6f 6e 20 69  (This notation i
10000 73 20 75 73 65 64 20 0a 09 62 79 20 4d 53 20 41  s used ..by MS A
10010 63 63 65 73 73 20 61 6e 64 20 53 51 4c 20 53 65  ccess and SQL Se
10020 72 76 65 72 2e 29 0a 3c 2f 74 61 62 6c 65 3e 0a  rver.).</table>.
10030 0a 3c 68 32 3e 46 61 6c 6c 62 61 63 6b 20 4b 65  .<h2>Fallback Ke
10040 79 77 6f 72 64 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  ywords</h2>..<p>
10050 54 68 65 73 65 20 6b 65 79 77 6f 72 64 73 20 63  These keywords c
10060 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 69 64  an be used as id
10070 65 6e 74 69 66 69 65 72 73 20 66 6f 72 20 53 51  entifiers for SQ
10080 4c 69 74 65 20 6f 62 6a 65 63 74 73 20 77 69 74  Lite objects wit
10090 68 6f 75 74 20 0a 64 65 6c 69 6d 69 74 65 72 73  hout .delimiters
100a0 2e 3c 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 6b 65  .</p>.}..proc ke
100b0 79 77 6f 72 64 5f 6c 69 73 74 20 7b 78 7d 20 7b  yword_list {x} {
100c0 0a 20 20 70 75 74 73 20 22 3c 70 3e 22 0a 20 20  .  puts "<p>".  
100d0 66 6f 72 65 61 63 68 20 6b 20 24 78 20 7b 0a 20  foreach k $x {. 
100e0 20 20 20 69 66 20 7b 5b 73 74 72 69 6e 67 20 69     if {[string i
100f0 6e 64 65 78 20 24 6b 20 30 5d 3d 3d 22 2a 22 7d  ndex $k 0]=="*"}
10100 20 7b 0a 20 20 20 20 20 20 73 65 74 20 6e 6f 6e   {.      set non
10110 73 74 61 6e 64 61 72 64 20 31 0a 20 20 20 20 20  standard 1.     
10120 20 73 65 74 20 6b 20 5b 73 74 72 69 6e 67 20 72   set k [string r
10130 61 6e 67 65 20 24 6b 20 31 20 65 6e 64 5d 0a 20  ange $k 1 end]. 
10140 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20     } else {.    
10150 20 20 73 65 74 20 6e 6f 6e 73 74 61 6e 64 61 72    set nonstandar
10160 64 20 30 0a 20 20 20 20 7d 0a 20 20 20 20 69 66  d 0.    }.    if
10170 20 7b 24 6e 6f 6e 73 74 61 6e 64 61 72 64 7d 20   {$nonstandard} 
10180 7b 0a 20 20 20 20 20 20 70 75 74 73 20 22 3c 69  {.      puts "<i
10190 3e 24 6b 3c 2f 69 3e 20 26 6e 62 73 70 3b 26 6e  >$k</i> &nbsp;&n
101a0 62 73 70 3b 22 0a 20 20 20 20 7d 20 65 6c 73 65  bsp;".    } else
101b0 20 7b 0a 20 20 20 20 20 20 70 75 74 73 20 22 24   {.      puts "$
101c0 6b 20 26 6e 62 73 70 3b 26 6e 62 73 70 3b 22 0a  k &nbsp;&nbsp;".
101d0 20 20 20 20 7d 0a 20 20 7d 0a 20 20 70 75 74 73      }.  }.  puts
101e0 20 22 3c 2f 70 3e 5c 6e 22 0a 7d 0a 0a 6b 65 79   "</p>\n".}..key
101f0 77 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20 2a 41  word_list {.  *A
10200 42 4f 52 54 0a 20 20 41 46 54 45 52 0a 20 20 41  BORT.  AFTER.  A
10210 53 43 0a 20 20 2a 41 54 54 41 43 48 0a 20 20 42  SC.  *ATTACH.  B
10220 45 46 4f 52 45 0a 20 20 42 45 47 49 4e 0a 20 20  EFORE.  BEGIN.  
10230 44 45 46 45 52 52 45 44 0a 20 20 43 41 53 43 41  DEFERRED.  CASCA
10240 44 45 20 0a 20 20 2a 43 4c 55 53 54 45 52 20 0a  DE .  *CLUSTER .
10250 20 20 2a 43 4f 4e 46 4c 49 43 54 0a 20 20 2a 43    *CONFLICT.  *C
10260 4f 50 59 0a 20 20 43 52 4f 53 53 0a 20 20 2a 44  OPY.  CROSS.  *D
10270 41 54 41 42 41 53 45 0a 20 20 2a 44 45 4c 49 4d  ATABASE.  *DELIM
10280 49 54 45 52 53 0a 20 20 44 45 53 43 0a 20 20 2a  ITERS.  DESC.  *
10290 44 45 54 41 43 48 0a 20 20 45 41 43 48 0a 20 20  DETACH.  EACH.  
102a0 45 4e 44 0a 20 20 2a 45 58 50 4c 41 49 4e 0a 20  END.  *EXPLAIN. 
102b0 20 2a 46 41 49 4c 0a 20 20 46 4f 52 0a 20 20 46   *FAIL.  FOR.  F
102c0 55 4c 4c 0a 20 20 49 47 4e 4f 52 45 0a 20 20 49  ULL.  IGNORE.  I
102d0 4d 4d 45 44 49 41 54 45 0a 20 20 49 4e 49 54 49  MMEDIATE.  INITI
102e0 41 4c 4c 59 0a 20 20 49 4e 4e 45 52 0a 20 20 2a  ALLY.  INNER.  *
102f0 49 4e 53 54 45 41 44 0a 20 20 4b 45 59 0a 20 20  INSTEAD.  KEY.  
10300 4c 45 46 54 0a 20 20 4d 41 54 43 48 20 0a 20 20  LEFT.  MATCH .  
10310 4e 41 54 55 52 41 4c 0a 20 20 4f 46 0a 20 20 2a  NATURAL.  OF.  *
10320 4f 46 46 53 45 54 0a 20 20 4f 55 54 45 52 0a 20  OFFSET.  OUTER. 
10330 20 2a 50 52 41 47 4d 41 0a 20 20 2a 52 41 49 53   *PRAGMA.  *RAIS
10340 45 0a 20 20 2a 52 45 50 4c 41 43 45 0a 20 20 52  E.  *REPLACE.  R
10350 45 53 54 52 49 43 54 0a 20 20 52 49 47 48 54 0a  ESTRICT.  RIGHT.
10360 20 20 2a 52 4f 57 0a 20 20 2a 53 54 41 54 45 4d    *ROW.  *STATEM
10370 45 4e 54 0a 20 20 2a 54 45 4d 50 0a 20 20 54 45  ENT.  *TEMP.  TE
10380 4d 50 4f 52 41 52 59 0a 20 20 54 52 49 47 47 45  MPORARY.  TRIGGE
10390 52 20 0a 20 20 2a 56 41 43 55 55 4d 0a 20 20 56  R .  *VACUUM.  V
103a0 49 45 57 0a 7d 0a 70 75 74 73 20 7b 0a 0a 3c 68  IEW.}.puts {..<h
103b0 32 3e 4e 6f 72 6d 61 6c 20 6b 65 79 77 6f 72 64  2>Normal keyword
103c0 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 73 65  s</h2>..<p>These
103d0 20 6b 65 79 77 6f 72 64 73 20 63 61 6e 20 62 65   keywords can be
103e0 20 75 73 65 64 20 61 73 20 69 64 65 6e 74 69 66   used as identif
103f0 69 65 72 73 20 66 6f 72 20 53 51 4c 69 74 65 20  iers for SQLite 
10400 6f 62 6a 65 63 74 73 2c 20 62 75 74 20 0a 6d 75  objects, but .mu
10410 73 74 20 62 65 20 65 6e 63 6c 6f 73 65 64 20 69  st be enclosed i
10420 6e 20 62 72 61 63 6b 65 74 73 20 6f 72 20 71 75  n brackets or qu
10430 6f 74 65 73 20 66 6f 72 20 53 51 4c 69 74 65 20  otes for SQLite 
10440 74 6f 20 72 65 63 6f 67 6e 69 7a 65 20 74 68 65  to recognize the
10450 6d 20 61 73 20 0a 61 6e 20 69 64 65 6e 74 69 66  m as .an identif
10460 69 65 72 2e 3c 2f 70 3e 0a 7d 0a 0a 6b 65 79 77  ier.</p>.}..keyw
10470 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20 41 4c 4c  ord_list {.  ALL
10480 0a 20 20 41 4e 44 0a 20 20 41 53 0a 20 20 42 45  .  AND.  AS.  BE
10490 54 57 45 45 4e 0a 20 20 42 59 0a 20 20 43 41 53  TWEEN.  BY.  CAS
104a0 45 0a 20 20 43 48 45 43 4b 0a 20 20 43 4f 4c 4c  E.  CHECK.  COLL
104b0 41 54 45 0a 20 20 43 4f 4d 4d 49 54 0a 20 20 43  ATE.  COMMIT.  C
104c0 4f 4e 53 54 52 41 49 4e 54 0a 20 20 43 52 45 41  ONSTRAINT.  CREA
104d0 54 45 20 0a 20 20 44 45 46 41 55 4c 54 0a 20 20  TE .  DEFAULT.  
104e0 44 45 46 45 52 52 41 42 4c 45 0a 20 20 44 45 4c  DEFERRABLE.  DEL
104f0 45 54 45 0a 20 20 44 49 53 54 49 4e 43 54 0a 20  ETE.  DISTINCT. 
10500 20 44 52 4f 50 0a 20 20 45 4c 53 45 0a 20 20 45   DROP.  ELSE.  E
10510 58 43 45 50 54 0a 20 20 46 4f 52 45 49 47 4e 0a  XCEPT.  FOREIGN.
10520 20 20 46 52 4f 4d 20 0a 20 20 2a 47 4c 4f 42 0a    FROM .  *GLOB.
10530 20 20 47 52 4f 55 50 0a 20 20 48 41 56 49 4e 47    GROUP.  HAVING
10540 0a 20 20 49 4e 0a 20 20 2a 49 4e 44 45 58 0a 20  .  IN.  *INDEX. 
10550 20 49 4e 53 45 52 54 0a 20 20 49 4e 54 45 52 53   INSERT.  INTERS
10560 45 43 54 0a 20 20 49 4e 54 4f 0a 20 20 49 53 20  ECT.  INTO.  IS 
10570 0a 20 20 2a 49 53 4e 55 4c 4c 0a 20 20 4a 4f 49  .  *ISNULL.  JOI
10580 4e 0a 20 20 4c 49 4b 45 0a 20 20 4c 49 4d 49 54  N.  LIKE.  LIMIT
10590 0a 20 20 4e 4f 54 0a 20 20 2a 4e 4f 54 4e 55 4c  .  NOT.  *NOTNUL
105a0 4c 0a 20 20 4e 55 4c 4c 0a 20 20 4f 4e 0a 20 20  L.  NULL.  ON.  
105b0 4f 52 0a 20 20 4f 52 44 45 52 20 0a 20 20 50 52  OR.  ORDER .  PR
105c0 49 4d 41 52 59 0a 20 20 52 45 46 45 52 45 4e 43  IMARY.  REFERENC
105d0 45 53 0a 20 20 52 4f 4c 4c 42 41 43 4b 0a 20 20  ES.  ROLLBACK.  
105e0 53 45 4c 45 43 54 0a 20 20 53 45 54 0a 20 20 54  SELECT.  SET.  T
105f0 41 42 4c 45 0a 20 20 54 48 45 4e 0a 20 20 54 52  ABLE.  THEN.  TR
10600 41 4e 53 41 43 54 49 4f 4e 0a 20 20 55 4e 49 4f  ANSACTION.  UNIO
10610 4e 20 0a 20 20 55 4e 49 51 55 45 0a 20 20 55 50  N .  UNIQUE.  UP
10620 44 41 54 45 0a 20 20 55 53 49 4e 47 0a 20 20 56  DATE.  USING.  V
10630 41 4c 55 45 53 0a 20 20 57 48 45 4e 0a 20 20 57  ALUES.  WHEN.  W
10640 48 45 52 45 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  HERE.}..puts {.<
10650 68 32 3e 53 70 65 63 69 61 6c 20 77 6f 72 64 73  h2>Special words
10660 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20 66 6f  </h2>..<p>The fo
10670 6c 6c 6f 77 69 6e 67 20 61 72 65 20 6e 6f 74 20  llowing are not 
10680 6b 65 79 77 6f 72 64 73 20 69 6e 20 53 51 4c 69  keywords in SQLi
10690 74 65 2c 20 62 75 74 20 61 72 65 20 75 73 65 64  te, but are used
106a0 20 61 73 20 6e 61 6d 65 73 20 6f 66 20 0a 73 79   as names of .sy
106b0 73 74 65 6d 20 6f 62 6a 65 63 74 73 2e 20 20 54  stem objects.  T
106c0 68 65 79 20 63 61 6e 20 62 65 20 75 73 65 64 20  hey can be used 
106d0 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72  as an identifier
106e0 20 66 6f 72 20 61 20 64 69 66 66 65 72 65 6e 74   for a different
106f0 20 0a 74 79 70 65 20 6f 66 20 6f 62 6a 65 63 74   .type of object
10700 2e 3c 2f 70 3e 0a 7d 0a 0a 6b 65 79 77 6f 72 64  .</p>.}..keyword
10710 5f 6c 69 73 74 20 7b 0a 20 20 2a 5f 52 4f 57 49  _list {.  *_ROWI
10720 44 5f 0a 20 20 2a 4d 41 49 4e 0a 20 20 4f 49 44  D_.  *MAIN.  OID
10730 0a 20 20 2a 52 4f 57 49 44 0a 20 20 2a 53 51 4c  .  *ROWID.  *SQL
10740 49 54 45 5f 4d 41 53 54 45 52 0a 20 20 2a 53 51  ITE_MASTER.  *SQ
10750 4c 49 54 45 5f 54 45 4d 50 5f 4d 41 53 54 45 52  LITE_TEMP_MASTER
10760 0a 7d 0a 0a 66 6f 6f 74 65 72 20 24 72 63 73 69  .}..footer $rcsi
10770 64 0a                                            d.