/ Hex Artifact Content
Login

Artifact 6cb027f5483aa831752daeef0c946111af303713:


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 36 36 20 32 30 30 34  .tcl,v 1.66 2004
0060: 2f 30 31 2f 31 39 20 30 35 3a 30 39 3a 32 34 20  /01/19 05:09:24 
0070: 6a 70 6c 79 6f 6e 20 45 78 70 20 24 7d 0a 0a 70  jplyon Exp $}..p
0080: 75 74 73 20 7b 3c 68 74 6d 6c 3e 0a 3c 68 65 61  uts {<html>.<hea
0090: 64 3e 0a 20 20 3c 74 69 74 6c 65 3e 51 75 65 72  d>.  <title>Quer
00a0: 79 20 4c 61 6e 67 75 61 67 65 20 55 6e 64 65 72  y Language Under
00b0: 73 74 6f 6f 64 20 42 79 20 53 51 4c 69 74 65 3c  stood By SQLite<
00c0: 2f 74 69 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e 0a  /title>.</head>.
00d0: 3c 62 6f 64 79 20 62 67 63 6f 6c 6f 72 3d 77 68  <body bgcolor=wh
00e0: 69 74 65 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d 63  ite>.<h1 align=c
00f0: 65 6e 74 65 72 3e 0a 53 51 4c 20 41 73 20 55 6e  enter>.SQL As Un
0100: 64 65 72 73 74 6f 6f 64 20 42 79 20 53 51 4c 69  derstood By SQLi
0110: 74 65 0a 3c 2f 68 31 3e 7d 0a 70 75 74 73 20 22  te.</h1>}.puts "
0120: 3c 70 20 61 6c 69 67 6e 3d 63 65 6e 74 65 72 3e  <p align=center>
0130: 0a 28 54 68 69 73 20 70 61 67 65 20 77 61 73 20  .(This page was 
0140: 6c 61 73 74 20 6d 6f 64 69 66 69 65 64 20 6f 6e  last modified on
0150: 20 5b 6c 72 61 6e 67 65 20 24 72 63 73 69 64 20   [lrange $rcsid 
0160: 33 20 34 5d 20 55 54 43 29 0a 3c 2f 70 3e 22 0a  3 4] UTC).</p>".
0170: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 53  .puts {.<p>The S
0180: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 75 6e  QLite library un
0190: 64 65 72 73 74 61 6e 64 73 20 6d 6f 73 74 20 6f  derstands most o
01a0: 66 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 53  f the standard S
01b0: 51 4c 0a 6c 61 6e 67 75 61 67 65 2e 20 20 42 75  QL.language.  Bu
01c0: 74 20 69 74 20 64 6f 65 73 20 3c 61 20 68 72 65  t it does <a hre
01d0: 66 3d 22 6f 6d 69 74 74 65 64 2e 68 74 6d 6c 22  f="omitted.html"
01e0: 3e 6f 6d 69 74 20 73 6f 6d 65 20 66 65 61 74 75  >omit some featu
01f0: 72 65 73 3c 2f 61 3e 0a 77 68 69 6c 65 20 61 74  res</a>.while at
0200: 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 0a 61   the same time.a
0210: 64 64 69 6e 67 20 61 20 66 65 77 20 66 65 61 74  dding a few feat
0220: 75 72 65 73 20 6f 66 20 69 74 73 20 6f 77 6e 2e  ures of its own.
0230: 20 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20    This document 
0240: 61 74 74 65 6d 70 74 73 20 74 6f 0a 64 65 73 63  attempts to.desc
0250: 72 69 62 65 20 70 65 72 63 69 73 65 6c 79 20 77  ribe percisely w
0260: 68 61 74 20 70 61 72 74 73 20 6f 66 20 74 68 65  hat parts of the
0270: 20 53 51 4c 20 6c 61 6e 67 75 61 67 65 20 53 51   SQL language SQ
0280: 4c 69 74 65 20 64 6f 65 73 0a 61 6e 64 20 64 6f  Lite does.and do
0290: 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 2e 20  es not support. 
02a0: 20 41 20 6c 69 73 74 20 6f 66 20 3c 61 20 68 72   A list of <a hr
02b0: 65 66 3d 22 23 6b 65 79 77 6f 72 64 73 22 3e 6b  ef="#keywords">k
02c0: 65 79 77 6f 72 64 73 3c 2f 61 3e 20 69 73 20 0a  eywords</a> is .
02d0: 67 69 76 65 6e 20 61 74 20 74 68 65 20 65 6e 64  given at the end
02e0: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 20 61 6c 6c  .</p>..<p>In all
02f0: 20 6f 66 20 74 68 65 20 73 79 6e 74 61 78 20 64   of the syntax d
0300: 69 61 67 72 61 6d 73 20 74 68 61 74 20 66 6f 6c  iagrams that fol
0310: 6c 6f 77 2c 20 6c 69 74 65 72 61 6c 20 74 65 78  low, literal tex
0320: 74 20 69 73 20 73 68 6f 77 6e 20 69 6e 0a 62 6f  t is shown in.bo
0330: 6c 64 20 62 6c 75 65 2e 20 20 4e 6f 6e 2d 74 65  ld blue.  Non-te
0340: 72 6d 69 6e 61 6c 20 73 79 6d 62 6f 6c 73 20 61  rminal symbols a
0350: 72 65 20 73 68 6f 77 6e 20 69 6e 20 69 74 61 6c  re shown in ital
0360: 69 63 20 72 65 64 2e 20 20 4f 70 65 72 61 74 6f  ic red.  Operato
0370: 72 73 0a 74 68 61 74 20 61 72 65 20 70 61 72 74  rs.that are part
0380: 20 6f 66 20 74 68 65 20 73 79 6e 74 61 63 74 69   of the syntacti
0390: 63 20 6d 61 72 6b 75 70 20 69 74 73 65 6c 66 20  c markup itself 
03a0: 61 72 65 20 73 68 6f 77 6e 20 69 6e 20 62 6c 61  are shown in bla
03b0: 63 6b 20 72 6f 6d 61 6e 2e 3c 2f 70 3e 0a 0a 3c  ck roman.</p>..<
03c0: 70 3e 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20  p>This document 
03d0: 69 73 20 6a 75 73 74 20 61 6e 20 6f 76 65 72 76  is just an overv
03e0: 69 65 77 20 6f 66 20 74 68 65 20 53 51 4c 20 73  iew of the SQL s
03f0: 79 6e 74 61 78 20 69 6d 70 6c 65 6d 65 6e 74 65  yntax implemente
0400: 64 0a 62 79 20 53 51 4c 69 74 65 2e 20 20 4d 61  d.by SQLite.  Ma
0410: 6e 79 20 6c 6f 77 2d 6c 65 76 65 6c 20 70 72 6f  ny low-level pro
0420: 64 75 63 74 69 6f 6e 73 20 61 72 65 20 6f 6d 69  ductions are omi
0430: 74 74 65 64 2e 20 20 46 6f 72 20 64 65 74 61 69  tted.  For detai
0440: 6c 65 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a  led information.
0450: 6f 6e 20 74 68 65 20 6c 61 6e 67 75 61 67 65 20  on the language 
0460: 74 68 61 74 20 53 51 4c 69 74 65 20 75 6e 64 65  that SQLite unde
0470: 72 73 74 61 6e 64 73 2c 20 72 65 66 65 72 20 74  rstands, refer t
0480: 6f 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64  o the source cod
0490: 65 20 61 6e 64 0a 74 68 65 20 67 72 61 6d 6d 61  e and.the gramma
04a0: 72 20 66 69 6c 65 20 22 70 61 72 73 65 2e 79 22  r file "parse.y"
04b0: 2e 3c 2f 70 3e 0a 0a 0a 3c 70 3e 53 51 4c 69 74  .</p>...<p>SQLit
04c0: 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 68 65  e implements the
04d0: 20 66 6f 6c 6c 6f 77 20 73 79 6e 74 61 78 3a 3c   follow syntax:<
04e0: 2f 70 3e 0a 3c 70 3e 3c 75 6c 3e 0a 7d 0a 0a 66  /p>.<p><ul>.}..f
04f0: 6f 72 65 61 63 68 20 7b 73 65 63 74 69 6f 6e 7d  oreach {section}
0500: 20 5b 6c 73 6f 72 74 20 2d 69 6e 64 65 78 20 30   [lsort -index 0
0510: 20 2d 64 69 63 74 69 6f 6e 61 72 79 20 7b 0a 20   -dictionary {. 
0520: 20 7b 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d   {{CREATE TABLE}
0530: 20 63 72 65 61 74 65 74 61 62 6c 65 7d 0a 20 20   createtable}.  
0540: 7b 7b 43 52 45 41 54 45 20 49 4e 44 45 58 7d 20  {{CREATE INDEX} 
0550: 63 72 65 61 74 65 69 6e 64 65 78 7d 0a 20 20 7b  createindex}.  {
0560: 56 41 43 55 55 4d 20 76 61 63 75 75 6d 7d 0a 20  VACUUM vacuum}. 
0570: 20 7b 7b 44 52 4f 50 20 54 41 42 4c 45 7d 20 64   {{DROP TABLE} d
0580: 72 6f 70 74 61 62 6c 65 7d 0a 20 20 7b 7b 44 52  roptable}.  {{DR
0590: 4f 50 20 49 4e 44 45 58 7d 20 64 72 6f 70 69 6e  OP INDEX} dropin
05a0: 64 65 78 7d 0a 20 20 7b 49 4e 53 45 52 54 20 69  dex}.  {INSERT i
05b0: 6e 73 65 72 74 7d 0a 20 20 7b 52 45 50 4c 41 43  nsert}.  {REPLAC
05c0: 45 20 72 65 70 6c 61 63 65 7d 0a 20 20 7b 44 45  E replace}.  {DE
05d0: 4c 45 54 45 20 64 65 6c 65 74 65 7d 0a 20 20 7b  LETE delete}.  {
05e0: 55 50 44 41 54 45 20 75 70 64 61 74 65 7d 0a 20  UPDATE update}. 
05f0: 20 7b 53 45 4c 45 43 54 20 73 65 6c 65 63 74 7d   {SELECT select}
0600: 0a 20 20 7b 63 6f 6d 6d 65 6e 74 20 63 6f 6d 6d  .  {comment comm
0610: 65 6e 74 7d 0a 20 20 7b 43 4f 50 59 20 63 6f 70  ent}.  {COPY cop
0620: 79 7d 0a 20 20 7b 45 58 50 4c 41 49 4e 20 65 78  y}.  {EXPLAIN ex
0630: 70 6c 61 69 6e 7d 0a 20 20 7b 65 78 70 72 65 73  plain}.  {expres
0640: 73 69 6f 6e 20 65 78 70 72 7d 0a 20 20 7b 7b 42  sion expr}.  {{B
0650: 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e  EGIN TRANSACTION
0660: 7d 20 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20  } transaction}. 
0670: 20 7b 7b 43 4f 4d 4d 49 54 20 54 52 41 4e 53 41   {{COMMIT TRANSA
0680: 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63 74 69  CTION} transacti
0690: 6f 6e 7d 0a 20 20 7b 7b 45 4e 44 20 54 52 41 4e  on}.  {{END TRAN
06a0: 53 41 43 54 49 4f 4e 7d 20 74 72 61 6e 73 61 63  SACTION} transac
06b0: 74 69 6f 6e 7d 0a 20 20 7b 7b 52 4f 4c 4c 42 41  tion}.  {{ROLLBA
06c0: 43 4b 20 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20  CK TRANSACTION} 
06d0: 74 72 61 6e 73 61 63 74 69 6f 6e 7d 0a 20 20 7b  transaction}.  {
06e0: 50 52 41 47 4d 41 20 70 72 61 67 6d 61 7d 0a 20  PRAGMA pragma}. 
06f0: 20 7b 7b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63   {{ON CONFLICT c
0700: 6c 61 75 73 65 7d 20 63 6f 6e 66 6c 69 63 74 7d  lause} conflict}
0710: 0a 20 20 7b 7b 43 52 45 41 54 45 20 56 49 45 57  .  {{CREATE VIEW
0720: 7d 20 63 72 65 61 74 65 76 69 65 77 7d 0a 20 20  } createview}.  
0730: 7b 7b 44 52 4f 50 20 56 49 45 57 7d 20 64 72 6f  {{DROP VIEW} dro
0740: 70 76 69 65 77 7d 0a 20 20 7b 7b 43 52 45 41 54  pview}.  {{CREAT
0750: 45 20 54 52 49 47 47 45 52 7d 20 63 72 65 61 74  E TRIGGER} creat
0760: 65 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b 44 52  etrigger}.  {{DR
0770: 4f 50 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70  OP TRIGGER} drop
0780: 74 72 69 67 67 65 72 7d 0a 20 20 7b 7b 41 54 54  trigger}.  {{ATT
0790: 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74  ACH DATABASE} at
07a0: 74 61 63 68 7d 0a 20 20 7b 7b 44 45 54 41 43 48  tach}.  {{DETACH
07b0: 20 44 41 54 41 42 41 53 45 7d 20 64 65 74 61 63   DATABASE} detac
07c0: 68 7d 0a 7d 5d 20 7b 0a 20 20 70 75 74 73 20 22  h}.}] {.  puts "
07d0: 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 5c 22 23 5b  <li><a href=\"#[
07e0: 6c 69 6e 64 65 78 20 24 73 65 63 74 69 6f 6e 20  lindex $section 
07f0: 31 5d 5c 22 3e 5b 6c 69 6e 64 65 78 20 24 73 65  1]\">[lindex $se
0800: 63 74 69 6f 6e 20 30 5d 3c 2f 61 3e 3c 2f 6c 69  ction 0]</a></li
0810: 3e 22 0a 7d 0a 70 75 74 73 20 7b 3c 2f 75 6c 3e  >".}.puts {</ul>
0820: 3c 2f 70 3e 0a 0a 3c 70 3e 44 65 74 61 69 6c 73  </p>..<p>Details
0830: 20 6f 6e 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e   on the implemen
0840: 74 61 74 69 6f 6e 20 6f 66 20 65 61 63 68 20 63  tation of each c
0850: 6f 6d 6d 61 6e 64 20 61 72 65 20 70 72 6f 76 69  ommand are provi
0860: 64 65 64 20 69 6e 0a 74 68 65 20 73 65 71 75 65  ded in.the seque
0870: 6c 2e 3c 2f 70 3e 0a 7d 0a 0a 70 72 6f 63 20 53  l.</p>.}..proc S
0880: 79 6e 74 61 78 20 7b 61 72 67 73 7d 20 7b 0a 20  yntax {args} {. 
0890: 20 70 75 74 73 20 7b 3c 74 61 62 6c 65 20 63 65   puts {<table ce
08a0: 6c 6c 70 61 64 64 69 6e 67 3d 22 31 30 22 3e 7d  llpadding="10">}
08b0: 0a 20 20 66 6f 72 65 61 63 68 20 7b 72 75 6c 65  .  foreach {rule
08c0: 20 62 6f 64 79 7d 20 24 61 72 67 73 20 7b 0a 20   body} $args {. 
08d0: 20 20 20 70 75 74 73 20 22 3c 74 72 3e 3c 74 64     puts "<tr><td
08e0: 20 61 6c 69 67 6e 3d 5c 22 72 69 67 68 74 5c 22   align=\"right\"
08f0: 20 76 61 6c 69 67 6e 3d 5c 22 74 6f 70 5c 22 3e   valign=\"top\">
0900: 22 0a 20 20 20 20 70 75 74 73 20 22 3c 69 3e 3c  ".    puts "<i><
0910: 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 66 66  font color=\"#ff
0920: 33 34 33 34 5c 22 3e 24 72 75 6c 65 3c 2f 66 6f  3434\">$rule</fo
0930: 6e 74 3e 3c 2f 69 3e 26 6e 62 73 70 3b 3a 3a 3d  nt></i>&nbsp;::=
0940: 3c 2f 74 64 3e 22 0a 20 20 20 20 72 65 67 73 75  </td>".    regsu
0950: 62 20 2d 61 6c 6c 20 3c 20 24 62 6f 64 79 20 7b  b -all < $body {
0960: 25 4c 54 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  %LT} body.    re
0970: 67 73 75 62 20 2d 61 6c 6c 20 3e 20 24 62 6f 64  gsub -all > $bod
0980: 79 20 7b 25 47 54 7d 20 62 6f 64 79 0a 20 20 20  y {%GT} body.   
0990: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 25 4c 54   regsub -all %LT
09a0: 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c   $body {</font><
09b0: 2f 62 3e 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f  /b><i><font colo
09c0: 72 3d 22 23 66 66 33 34 33 34 22 3e 7d 20 62 6f  r="#ff3434">} bo
09d0: 64 79 0a 20 20 20 20 72 65 67 73 75 62 20 2d 61  dy.    regsub -a
09e0: 6c 6c 20 25 47 54 20 24 62 6f 64 79 20 7b 3c 2f  ll %GT $body {</
09f0: 66 6f 6e 74 3e 3c 2f 69 3e 3c 62 3e 3c 66 6f 6e  font></i><b><fon
0a00: 74 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30  t color="#2c2cf0
0a10: 22 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67  ">} body.    reg
0a20: 73 75 62 20 2d 61 6c 6c 20 7b 5b 5d 7c 5b 2a 3f  sub -all {[]|[*?
0a30: 5d 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e 74  ]} $body {</font
0a40: 3e 3c 2f 62 3e 26 3c 62 3e 3c 66 6f 6e 74 20 63  ></b>&<b><font c
0a50: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 7d  olor="#2c2cf0">}
0a60: 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62   body.    regsub
0a70: 20 2d 61 6c 6c 20 22 5c 6e 22 20 5b 73 74 72 69   -all "\n" [stri
0a80: 6e 67 20 74 72 69 6d 20 24 62 6f 64 79 5d 20 22  ng trim $body] "
0a90: 3c 62 72 3e 5c 6e 22 20 62 6f 64 79 0a 20 20 20  <br>\n" body.   
0aa0: 20 72 65 67 73 75 62 20 2d 61 6c 6c 20 22 5c 6e   regsub -all "\n
0ab0: 20 20 2a 22 20 24 62 6f 64 79 20 22 5c 6e 5c 5c    *" $body "\n\\
0ac0: 26 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 5c 5c  &nbsp;\\&nbsp;\\
0ad0: 26 6e 62 73 70 3b 5c 5c 26 6e 62 73 70 3b 22 20  &nbsp;\\&nbsp;" 
0ae0: 62 6f 64 79 0a 20 20 20 20 72 65 67 73 75 62 20  body.    regsub 
0af0: 2d 61 6c 6c 20 7b 5b 7c 2c 2e 2a 28 29 5d 7d 20  -all {[|,.*()]} 
0b00: 24 62 6f 64 79 20 7b 3c 62 69 67 3e 26 3c 2f 62  $body {<big>&</b
0b10: 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65  ig>} body.    re
0b20: 67 73 75 62 20 2d 61 6c 6c 20 7b 20 3d 20 7d 20  gsub -all { = } 
0b30: 24 62 6f 64 79 20 7b 20 3c 62 69 67 3e 3d 3c 2f  $body { <big>=</
0b40: 62 69 67 3e 20 7d 20 62 6f 64 79 0a 20 20 20 20  big> } body.    
0b50: 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b 53 54 41  regsub -all {STA
0b60: 52 7d 20 24 62 6f 64 79 20 7b 3c 62 69 67 3e 2a  R} $body {<big>*
0b70: 3c 2f 62 69 67 3e 7d 20 62 6f 64 79 0a 20 20 20  </big>} body.   
0b80: 20 23 23 20 54 68 65 73 65 20 6d 65 74 61 63 68   ## These metach
0b90: 61 72 61 63 74 65 72 73 20 6d 75 73 74 20 62 65  aracters must be
0ba0: 20 68 61 6e 64 6c 65 64 20 74 6f 20 75 6e 64 6f   handled to undo
0bb0: 20 62 65 69 6e 67 0a 20 20 20 20 23 23 20 74 72   being.    ## tr
0bc0: 65 61 74 65 64 20 61 73 20 53 51 4c 20 70 75 6e  eated as SQL pun
0bd0: 63 74 75 61 74 69 6f 6e 20 63 68 61 72 61 63 74  ctuation charact
0be0: 65 72 73 20 61 62 6f 76 65 2e 0a 20 20 20 20 72  ers above..    r
0bf0: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 52 50 50 4c  egsub -all {RPPL
0c00: 55 53 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f 6e  US} $body {</fon
0c10: 74 3e 3c 2f 62 3e 29 2b 3c 62 3e 3c 66 6f 6e 74  t></b>)+<b><font
0c20: 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22   color="#2c2cf0"
0c30: 3e 7d 20 62 6f 64 79 0a 20 20 20 20 72 65 67 73  >} body.    regs
0c40: 75 62 20 2d 61 6c 6c 20 7b 4c 50 7d 20 24 62 6f  ub -all {LP} $bo
0c50: 64 79 20 7b 3c 2f 66 6f 6e 74 3e 3c 2f 62 3e 28  dy {</font></b>(
0c60: 3c 62 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22  <b><font color="
0c70: 23 32 63 32 63 66 30 22 3e 7d 20 62 6f 64 79 0a  #2c2cf0">} body.
0c80: 20 20 20 20 72 65 67 73 75 62 20 2d 61 6c 6c 20      regsub -all 
0c90: 7b 52 50 7d 20 24 62 6f 64 79 20 7b 3c 2f 66 6f  {RP} $body {</fo
0ca0: 6e 74 3e 3c 2f 62 3e 29 3c 62 3e 3c 66 6f 6e 74  nt></b>)<b><font
0cb0: 20 63 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22   color="#2c2cf0"
0cc0: 3e 7d 20 62 6f 64 79 0a 20 20 20 20 23 23 20 50  >} body.    ## P
0cd0: 6c 61 63 65 20 74 68 65 20 6c 65 66 74 2d 68 61  lace the left-ha
0ce0: 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20 72  nd side of the r
0cf0: 75 6c 65 20 69 6e 20 74 68 65 20 32 6e 64 20 74  ule in the 2nd t
0d00: 61 62 6c 65 20 63 6f 6c 75 6d 6e 2e 0a 20 20 20  able column..   
0d10: 20 70 75 74 73 20 22 3c 74 64 3e 3c 62 3e 3c 66   puts "<td><b><f
0d20: 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32  ont color=\"#2c2
0d30: 63 66 30 5c 22 3e 24 62 6f 64 79 3c 2f 66 6f 6e  cf0\">$body</fon
0d40: 74 3e 3c 2f 62 3e 3c 2f 74 64 3e 3c 2f 74 72 3e  t></b></td></tr>
0d50: 22 0a 20 20 7d 0a 20 20 70 75 74 73 20 7b 3c 2f  ".  }.  puts {</
0d60: 74 61 62 6c 65 3e 7d 0a 7d 0a 70 72 6f 63 20 4f  table>}.}.proc O
0d70: 70 65 72 61 74 6f 72 20 7b 6e 61 6d 65 7d 20 7b  perator {name} {
0d80: 0a 20 20 72 65 74 75 72 6e 20 22 3c 66 6f 6e 74  .  return "<font
0d90: 20 63 6f 6c 6f 72 3d 5c 22 23 32 63 32 63 66 30   color=\"#2c2cf0
0da0: 5c 22 3e 3c 62 69 67 3e 24 6e 61 6d 65 3c 2f 62  \"><big>$name</b
0db0: 69 67 3e 3c 2f 66 6f 6e 74 3e 22 0a 7d 0a 70 72  ig></font>".}.pr
0dc0: 6f 63 20 4e 6f 6e 74 65 72 6d 69 6e 61 6c 20 7b  oc Nonterminal {
0dd0: 6e 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e  name} {.  return
0de0: 20 22 3c 69 3e 3c 66 6f 6e 74 20 63 6f 6c 6f 72   "<i><font color
0df0: 3d 5c 22 23 66 66 33 34 33 34 5c 22 3e 24 6e 61  =\"#ff3434\">$na
0e00: 6d 65 3c 2f 66 6f 6e 74 3e 3c 2f 69 3e 22 0a 7d  me</font></i>".}
0e10: 0a 70 72 6f 63 20 4b 65 79 77 6f 72 64 20 7b 6e  .proc Keyword {n
0e20: 61 6d 65 7d 20 7b 0a 20 20 72 65 74 75 72 6e 20  ame} {.  return 
0e30: 22 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 5c 22 23  "<font color=\"#
0e40: 32 63 32 63 66 30 5c 22 3e 24 6e 61 6d 65 3c 2f  2c2cf0\">$name</
0e50: 66 6f 6e 74 3e 22 0a 7d 0a 20 0a 0a 70 72 6f 63  font>".}. ..proc
0e60: 20 53 65 63 74 69 6f 6e 20 7b 6e 61 6d 65 20 7b   Section {name {
0e70: 6c 61 62 65 6c 20 7b 7d 7d 7d 20 7b 0a 20 20 70  label {}}} {.  p
0e80: 75 74 73 20 22 5c 6e 3c 68 72 20 2f 3e 22 0a 20  uts "\n<hr />". 
0e90: 20 69 66 20 7b 24 6c 61 62 65 6c 21 3d 22 22 7d   if {$label!=""}
0ea0: 20 7b 0a 20 20 20 20 70 75 74 73 20 22 3c 61 20   {.    puts "<a 
0eb0: 6e 61 6d 65 3d 5c 22 24 6c 61 62 65 6c 5c 22 3e  name=\"$label\">
0ec0: 3c 2f 61 3e 22 0a 20 20 7d 0a 20 20 70 75 74 73  </a>".  }.  puts
0ed0: 20 22 3c 68 31 3e 24 6e 61 6d 65 3c 2f 68 31 3e   "<h1>$name</h1>
0ee0: 5c 6e 22 0a 7d 0a 0a 70 72 6f 63 20 45 78 61 6d  \n".}..proc Exam
0ef0: 70 6c 65 20 7b 74 65 78 74 7d 20 7b 0a 20 20 70  ple {text} {.  p
0f00: 75 74 73 20 22 3c 62 6c 6f 63 6b 71 75 6f 74 65  uts "<blockquote
0f10: 3e 3c 70 72 65 3e 24 74 65 78 74 3c 2f 70 72 65  ><pre>$text</pre
0f20: 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 22 0a  ></blockquote>".
0f30: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 41 54 54  }...Section {ATT
0f40: 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 61 74  ACH DATABASE} at
0f50: 74 61 63 68 0a 0a 53 79 6e 74 61 78 20 7b 73 71  tach..Syntax {sq
0f60: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 41  l-statement} {.A
0f70: 54 54 41 43 48 20 5b 44 41 54 41 42 41 53 45 5d  TTACH [DATABASE]
0f80: 20 3c 64 61 74 61 62 61 73 65 2d 66 69 6c 65 6e   <database-filen
0f90: 61 6d 65 3e 20 41 53 20 3c 64 61 74 61 62 61 73  ame> AS <databas
0fa0: 65 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20  e-name>.}..puts 
0fb0: 7b 0a 3c 70 3e 54 68 65 20 41 54 54 41 43 48 20  {.<p>The ATTACH 
0fc0: 44 41 54 41 42 41 53 45 20 73 74 61 74 65 6d 65  DATABASE stateme
0fd0: 6e 74 20 61 64 64 73 20 61 20 70 72 65 65 78 69  nt adds a preexi
0fe0: 73 74 69 6e 67 20 64 61 74 61 62 61 73 65 20 0a  sting database .
0ff0: 66 69 6c 65 20 74 6f 20 74 68 65 20 63 75 72 72  file to the curr
1000: 65 6e 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e  ent database con
1010: 6e 65 63 74 69 6f 6e 2e 20 20 49 66 20 74 68 65  nection.  If the
1020: 20 66 69 6c 65 6e 61 6d 65 20 63 6f 6e 74 61 69   filename contai
1030: 6e 73 20 0a 70 75 6e 63 74 75 61 74 69 6f 6e 20  ns .punctuation 
1040: 63 68 61 72 61 63 74 65 72 73 20 69 74 20 6d 75  characters it mu
1050: 73 74 20 62 65 20 71 75 6f 74 65 64 2e 20 20 54  st be quoted.  T
1060: 68 65 20 6e 61 6d 65 73 20 27 6d 61 69 6e 27 20  he names 'main' 
1070: 61 6e 64 20 0a 27 74 65 6d 70 27 20 72 65 66 65  and .'temp' refe
1080: 72 20 74 6f 20 74 68 65 20 6d 61 69 6e 20 64 61  r to the main da
1090: 74 61 62 61 73 65 20 61 6e 64 20 74 68 65 20 64  tabase and the d
10a0: 61 74 61 62 61 73 65 20 75 73 65 64 20 66 6f 72  atabase used for
10b0: 20 0a 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c   .temporary tabl
10c0: 65 73 2e 20 20 54 68 65 73 65 20 63 61 6e 6e 6f  es.  These canno
10d0: 74 20 62 65 20 64 65 74 61 63 68 65 64 2e 20 20  t be detached.  
10e0: 41 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  Attached databas
10f0: 65 73 20 0a 61 72 65 20 72 65 6d 6f 76 65 64 20  es .are removed 
1100: 75 73 69 6e 67 20 74 68 65 20 3c 61 20 68 72 65  using the <a hre
1110: 66 3d 22 23 64 65 74 61 63 68 22 3e 44 45 54 41  f="#detach">DETA
1120: 43 48 20 44 41 54 41 42 41 53 45 3c 2f 61 3e 20  CH DATABASE</a> 
1130: 0a 73 74 61 74 65 6d 65 6e 74 2e 3c 2f 70 3e 0a  .statement.</p>.
1140: 0a 3c 70 3e 59 6f 75 20 63 61 6e 20 72 65 61 64  .<p>You can read
1150: 20 66 72 6f 6d 20 61 6e 64 20 77 72 69 74 65 20   from and write 
1160: 74 6f 20 61 6e 20 61 74 74 61 63 68 65 64 20 64  to an attached d
1170: 61 74 61 62 61 73 65 2c 20 62 75 74 20 79 6f 75  atabase, but you
1180: 20 63 61 6e 6e 6f 74 20 0a 61 6c 74 65 72 20 74   cannot .alter t
1190: 68 65 20 73 63 68 65 6d 61 20 6f 66 20 61 6e 20  he schema of an 
11a0: 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73  attached databas
11b0: 65 2e 20 20 59 6f 75 20 63 61 6e 20 6f 6e 6c 79  e.  You can only
11c0: 20 43 52 45 41 54 45 20 61 6e 64 20 0a 44 52 4f   CREATE and .DRO
11d0: 50 20 69 6e 20 74 68 65 20 6f 72 69 67 69 6e 61  P in the origina
11e0: 6c 20 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a  l database.</p>.
11f0: 0a 3c 70 3e 59 6f 75 20 63 61 6e 6e 6f 74 20 63  .<p>You cannot c
1200: 72 65 61 74 65 20 61 20 6e 65 77 20 74 61 62 6c  reate a new tabl
1210: 65 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20  e with the same 
1220: 6e 61 6d 65 20 61 73 20 61 20 74 61 62 6c 65 20  name as a table 
1230: 69 6e 20 0a 61 6e 20 61 74 74 61 63 68 65 64 20  in .an attached 
1240: 64 61 74 61 62 61 73 65 2c 20 62 75 74 20 79 6f  database, but yo
1250: 75 20 63 61 6e 20 61 74 74 61 63 68 20 61 20 64  u can attach a d
1260: 61 74 61 62 61 73 65 20 77 68 69 63 68 20 63 6f  atabase which co
1270: 6e 74 61 69 6e 73 0a 74 61 62 6c 65 73 20 77 68  ntains.tables wh
1280: 6f 73 65 20 6e 61 6d 65 73 20 61 72 65 20 64 75  ose names are du
1290: 70 6c 69 63 61 74 65 73 20 6f 66 20 74 61 62 6c  plicates of tabl
12a0: 65 73 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 64  es in the main d
12b0: 61 74 61 62 61 73 65 2e 20 20 49 74 20 69 73 20  atabase.  It is 
12c0: 0a 61 6c 73 6f 20 70 65 72 6d 69 73 73 69 62 6c  .also permissibl
12d0: 65 20 74 6f 20 61 74 74 61 63 68 20 74 68 65 20  e to attach the 
12e0: 73 61 6d 65 20 64 61 74 61 62 61 73 65 20 66 69  same database fi
12f0: 6c 65 20 6d 75 6c 74 69 70 6c 65 20 74 69 6d 65  le multiple time
1300: 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 61 62 6c 65  s.</p>..<p>Table
1310: 73 20 69 6e 20 61 6e 20 61 74 74 61 63 68 65 64  s in an attached
1320: 20 64 61 74 61 62 61 73 65 20 63 61 6e 20 62 65   database can be
1330: 20 72 65 66 65 72 72 65 64 20 74 6f 20 75 73 69   referred to usi
1340: 6e 67 20 74 68 65 20 73 79 6e 74 61 78 20 0a 3c  ng the syntax .<
1350: 69 3e 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 2e  i>database-name.
1360: 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 2e 20  table-name</i>. 
1370: 20 49 66 20 61 6e 20 61 74 74 61 63 68 65 64 20   If an attached 
1380: 74 61 62 6c 65 20 64 6f 65 73 6e 27 74 20 68 61  table doesn't ha
1390: 76 65 20 0a 61 20 64 75 70 6c 69 63 61 74 65 20  ve .a duplicate 
13a0: 74 61 62 6c 65 20 6e 61 6d 65 20 69 6e 20 74 68  table name in th
13b0: 65 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 2c  e main database,
13c0: 20 69 74 20 64 6f 65 73 6e 27 74 20 72 65 71 75   it doesn't requ
13d0: 69 72 65 20 61 20 0a 64 61 74 61 62 61 73 65 20  ire a .database 
13e0: 6e 61 6d 65 20 70 72 65 66 69 78 2e 20 20 57 68  name prefix.  Wh
13f0: 65 6e 20 61 20 64 61 74 61 62 61 73 65 20 69 73  en a database is
1400: 20 61 74 74 61 63 68 65 64 2c 20 61 6c 6c 20 6f   attached, all o
1410: 66 20 69 74 73 20 0a 74 61 62 6c 65 73 20 77 68  f its .tables wh
1420: 69 63 68 20 64 6f 6e 27 74 20 68 61 76 65 20 64  ich don't have d
1430: 75 70 6c 69 63 61 74 65 20 6e 61 6d 65 73 20 62  uplicate names b
1440: 65 63 6f 6d 65 20 74 68 65 20 27 64 65 66 61 75  ecome the 'defau
1450: 6c 74 27 20 74 61 62 6c 65 0a 6f 66 20 74 68 61  lt' table.of tha
1460: 74 20 6e 61 6d 65 2e 20 20 41 6e 79 20 74 61 62  t name.  Any tab
1470: 6c 65 73 20 6f 66 20 74 68 61 74 20 6e 61 6d 65  les of that name
1480: 20 61 74 74 61 63 68 65 64 20 61 66 74 65 72 77   attached afterw
1490: 61 72 64 73 20 72 65 71 75 69 72 65 20 74 68 65  ards require the
14a0: 20 74 61 62 6c 65 20 0a 70 72 65 66 69 78 2e 20   table .prefix. 
14b0: 49 66 20 74 68 65 20 27 64 65 66 61 75 6c 74 27  If the 'default'
14c0: 20 74 61 62 6c 65 20 6f 66 20 61 20 67 69 76 65   table of a give
14d0: 6e 20 6e 61 6d 65 20 69 73 20 64 65 74 61 63 68  n name is detach
14e0: 65 64 2c 20 74 68 65 6e 20 0a 74 68 65 20 6c 61  ed, then .the la
14f0: 73 74 20 74 61 62 6c 65 20 6f 66 20 74 68 61 74  st table of that
1500: 20 6e 61 6d 65 20 61 74 74 61 63 68 65 64 20 62   name attached b
1510: 65 63 6f 6d 65 73 20 74 68 65 20 6e 65 77 20 64  ecomes the new d
1520: 65 66 61 75 6c 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e  efault.</p>..<p>
1530: 57 68 65 6e 20 74 68 65 72 65 20 61 72 65 20 61  When there are a
1540: 74 74 61 63 68 65 64 20 64 61 74 61 62 61 73 65  ttached database
1550: 73 2c 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 20  s, transactions 
1560: 61 72 65 20 6e 6f 74 20 61 74 6f 6d 69 63 2e 20  are not atomic. 
1570: 0a 54 72 61 6e 73 61 63 74 69 6f 6e 73 20 63 6f  .Transactions co
1580: 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 61 74 6f  ntinue to be ato
1590: 6d 69 63 20 77 69 74 68 69 6e 20 65 61 63 68 20  mic within each 
15a0: 69 6e 64 69 76 69 64 75 61 6c 0a 64 61 74 61 62  individual.datab
15b0: 61 73 65 20 66 69 6c 65 2e 20 42 75 74 20 69 66  ase file. But if
15c0: 20 79 6f 75 72 20 6d 61 63 68 69 6e 65 20 63 72   your machine cr
15d0: 61 73 68 65 73 20 69 6e 20 74 68 65 20 6d 69 64  ashes in the mid
15e0: 64 6c 65 0a 6f 66 20 61 20 43 4f 4d 4d 49 54 20  dle.of a COMMIT 
15f0: 77 68 65 72 65 20 79 6f 75 20 68 61 76 65 20 75  where you have u
1600: 70 64 61 74 65 64 20 74 77 6f 20 6f 72 20 6d 6f  pdated two or mo
1610: 72 65 20 64 61 74 61 62 61 73 65 0a 66 69 6c 65  re database.file
1620: 73 2c 20 73 6f 6d 65 20 6f 66 20 74 68 6f 73 65  s, some of those
1630: 20 66 69 6c 65 73 20 6d 69 67 68 74 20 67 65 74   files might get
1640: 20 74 68 65 20 63 68 61 6e 67 65 73 20 77 68 65   the changes whe
1650: 72 65 20 6f 74 68 65 72 73 0a 6d 69 67 68 74 20  re others.might 
1660: 6e 6f 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  not.</p>..<p>The
1670: 72 65 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 2d  re is a compile-
1680: 74 69 6d 65 20 6c 69 6d 69 74 20 6f 66 20 31 30  time limit of 10
1690: 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62 61   attached databa
16a0: 73 65 20 66 69 6c 65 73 2e 3c 2f 70 3e 0a 0a 3c  se files.</p>..<
16b0: 70 3e 45 78 65 63 75 74 69 6e 67 20 61 20 42 45  p>Executing a BE
16c0: 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 20  GIN TRANSACTION 
16d0: 73 74 61 74 65 6d 65 6e 74 20 6c 6f 63 6b 73 20  statement locks 
16e0: 61 6c 6c 20 64 61 74 61 62 61 73 65 0a 66 69 6c  all database.fil
16f0: 65 73 2c 20 73 6f 20 74 68 69 73 20 66 65 61 74  es, so this feat
1700: 75 72 65 20 63 61 6e 6e 6f 74 20 28 63 75 72 72  ure cannot (curr
1710: 65 6e 74 6c 79 29 20 62 65 20 75 73 65 64 20 74  ently) be used t
1720: 6f 20 69 6e 63 72 65 61 73 65 20 0a 63 6f 6e 63  o increase .conc
1730: 75 72 72 61 6e 63 79 2e 3c 2f 70 3e 0a 7d 0a 0a  urrancy.</p>.}..
1740: 0a 53 65 63 74 69 6f 6e 20 7b 42 45 47 49 4e 20  .Section {BEGIN 
1750: 54 52 41 4e 53 41 43 54 49 4f 4e 7d 20 74 72 61  TRANSACTION} tra
1760: 6e 73 61 63 74 69 6f 6e 0a 0a 53 79 6e 74 61 78  nsaction..Syntax
1770: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
1780: 20 7b 0a 42 45 47 49 4e 20 5b 54 52 41 4e 53 41   {.BEGIN [TRANSA
1790: 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 20  CTION [<name>]] 
17a0: 5b 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f  [ON CONFLICT <co
17b0: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
17c0: 3e 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c  >].}.Syntax {sql
17d0: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 45 4e  -statement} {.EN
17e0: 44 20 5b 54 52 41 4e 53 41 43 54 49 4f 4e 20 5b  D [TRANSACTION [
17f0: 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 53 79 6e 74 61  <name>]].}.Synta
1800: 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74  x {sql-statement
1810: 7d 20 7b 0a 43 4f 4d 4d 49 54 20 5b 54 52 41 4e  } {.COMMIT [TRAN
1820: 53 41 43 54 49 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d  SACTION [<name>]
1830: 5d 0a 7d 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ].}.Syntax {sql-
1840: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 52 4f 4c  statement} {.ROL
1850: 4c 42 41 43 4b 20 5b 54 52 41 4e 53 41 43 54 49  LBACK [TRANSACTI
1860: 4f 4e 20 5b 3c 6e 61 6d 65 3e 5d 5d 0a 7d 0a 0a  ON [<name>]].}..
1870: 70 75 74 73 20 7b 0a 3c 70 3e 42 65 67 69 6e 6e  puts {.<p>Beginn
1880: 69 6e 67 20 69 6e 20 76 65 72 73 69 6f 6e 20 32  ing in version 2
1890: 2e 30 2c 20 53 51 4c 69 74 65 20 73 75 70 70 6f  .0, SQLite suppo
18a0: 72 74 73 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  rts transactions
18b0: 20 77 69 74 68 0a 72 6f 6c 6c 62 61 63 6b 20 61   with.rollback a
18c0: 6e 64 20 61 74 6f 6d 69 63 20 63 6f 6d 6d 69 74  nd atomic commit
18d0: 2e 20 20 53 65 65 20 3c 61 20 68 72 65 66 3d 22  .  See <a href="
18e0: 23 61 74 74 61 63 68 22 3e 41 54 54 41 43 48 3c  #attach">ATTACH<
18f0: 2f 61 3e 20 66 6f 72 0a 61 6e 20 65 78 63 65 70  /a> for.an excep
1900: 74 69 6f 6e 20 77 68 65 6e 20 74 68 65 72 65 20  tion when there 
1910: 61 72 65 20 61 74 74 61 63 68 65 64 20 64 61 74  are attached dat
1920: 61 62 61 73 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e  abases.</p>..<p>
1930: 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 74 72 61  The optional tra
1940: 6e 73 61 63 74 69 6f 6e 20 6e 61 6d 65 20 69 73  nsaction name is
1950: 20 69 67 6e 6f 72 65 64 2e 20 53 51 4c 69 74 65   ignored. SQLite
1960: 20 63 75 72 72 65 6e 74 6c 79 20 0a 64 6f 65 73   currently .does
1970: 6e 27 74 20 61 6c 6c 6f 77 20 6e 65 73 74 65 64  n't allow nested
1980: 20 74 72 61 6e 73 61 63 74 69 6f 6e 73 2e 20 20   transactions.  
1990: 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 73 74  Attempting to st
19a0: 61 72 74 20 61 20 6e 65 77 20 0a 74 72 61 6e 73  art a new .trans
19b0: 61 63 74 69 6f 6e 20 69 6e 73 69 64 65 20 61 6e  action inside an
19c0: 6f 74 68 65 72 20 69 73 20 61 6e 20 65 72 72 6f  other is an erro
19d0: 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 0a 4e 6f 20 63  r.</p>..<p>.No c
19e0: 68 61 6e 67 65 73 20 63 61 6e 20 62 65 20 6d 61  hanges can be ma
19f0: 64 65 20 74 6f 20 74 68 65 20 64 61 74 61 62 61  de to the databa
1a00: 73 65 20 65 78 63 65 70 74 20 77 69 74 68 69 6e  se except within
1a10: 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2e 0a   a transaction..
1a20: 41 6e 79 20 63 6f 6d 6d 61 6e 64 20 74 68 61 74  Any command that
1a30: 20 63 68 61 6e 67 65 73 20 74 68 65 20 64 61 74   changes the dat
1a40: 61 62 61 73 65 20 28 62 61 73 69 63 61 6c 6c 79  abase (basically
1a50: 2c 20 61 6e 79 20 53 51 4c 20 63 6f 6d 6d 61 6e  , any SQL comman
1a60: 64 0a 6f 74 68 65 72 20 74 68 61 6e 20 53 45 4c  d.other than SEL
1a70: 45 43 54 29 20 77 69 6c 6c 20 61 75 74 6f 6d 61  ECT) will automa
1a80: 74 69 63 61 6c 6c 79 20 73 74 61 72 74 20 61 20  tically start a 
1a90: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 66 0a 6f  transaction if.o
1aa0: 6e 65 20 69 73 20 6e 6f 74 20 61 6c 72 65 61 64  ne is not alread
1ab0: 79 20 69 6e 20 65 66 66 65 63 74 2e 20 20 41 75  y in effect.  Au
1ac0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 73 74 61 72  tomatically star
1ad0: 74 65 64 20 74 72 61 6e 73 61 63 74 69 6f 6e 73  ted transactions
1ae0: 0a 61 72 65 20 63 6f 6d 6d 69 74 74 65 64 20 61  .are committed a
1af0: 74 20 74 68 65 20 63 6f 6e 63 6c 75 73 69 6f 6e  t the conclusion
1b00: 20 6f 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 2e   of the command.
1b10: 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 54 72 61 6e 73  .</p>..<p>.Trans
1b20: 61 63 74 69 6f 6e 73 20 63 61 6e 20 62 65 20 73  actions can be s
1b30: 74 61 72 74 65 64 20 6d 61 6e 75 61 6c 6c 79 20  tarted manually 
1b40: 75 73 69 6e 67 20 74 68 65 20 42 45 47 49 4e 0a  using the BEGIN.
1b50: 63 6f 6d 6d 61 6e 64 2e 20 20 53 75 63 68 20 74  command.  Such t
1b60: 72 61 6e 73 61 63 74 69 6f 6e 73 20 75 73 75 61  ransactions usua
1b70: 6c 6c 79 20 70 65 72 73 69 73 74 20 75 6e 74 69  lly persist unti
1b80: 6c 20 74 68 65 20 6e 65 78 74 0a 43 4f 4d 4d 49  l the next.COMMI
1b90: 54 20 6f 72 20 52 4f 4c 4c 42 41 43 4b 20 63 6f  T or ROLLBACK co
1ba0: 6d 6d 61 6e 64 2e 20 20 42 75 74 20 61 20 74 72  mmand.  But a tr
1bb0: 61 6e 73 61 63 74 69 6f 6e 20 77 69 6c 6c 20 61  ansaction will a
1bc0: 6c 73 6f 20 0a 52 4f 4c 4c 42 41 43 4b 20 69 66  lso .ROLLBACK if
1bd0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 73   the database is
1be0: 20 63 6c 6f 73 65 64 20 6f 72 20 69 66 20 61 6e   closed or if an
1bf0: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 0a 61 6e   error occurs.an
1c00: 64 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 20 63  d the ROLLBACK c
1c10: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
1c20: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20  on algorithm is 
1c30: 73 70 65 63 69 66 69 65 64 2e 0a 53 65 65 20 74  specified..See t
1c40: 68 65 20 64 6f 63 75 6d 65 6e 74 69 6f 6e 20 6f  he documention o
1c50: 6e 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23  n the <a href="#
1c60: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
1c70: 46 4c 49 43 54 3c 2f 61 3e 0a 63 6c 61 75 73 65  FLICT</a>.clause
1c80: 20 66 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20   for additional 
1c90: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
1ca0: 74 20 74 68 65 20 52 4f 4c 4c 42 41 43 4b 0a 63  t the ROLLBACK.c
1cb0: 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c 75 74 69  onflict resoluti
1cc0: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 3c 2f  on algorithm..</
1cd0: 70 3e 0a 0a 3c 70 3e 0a 54 68 65 20 6f 70 74 69  p>..<p>.The opti
1ce0: 6f 6e 61 6c 20 4f 4e 20 43 4f 4e 46 4c 49 43 54  onal ON CONFLICT
1cf0: 20 63 6c 61 75 73 65 20 61 74 20 74 68 65 20 65   clause at the e
1d00: 6e 64 20 6f 66 20 61 20 42 45 47 49 4e 20 73 74  nd of a BEGIN st
1d10: 61 74 65 6d 65 6e 74 0a 63 61 6e 20 62 65 20 75  atement.can be u
1d20: 73 65 64 20 74 6f 20 63 68 61 6e 67 65 64 20 74  sed to changed t
1d30: 68 65 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 6c  he default confl
1d40: 69 63 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61  ict resolution a
1d50: 6c 67 6f 72 69 74 68 6d 2e 0a 54 68 65 20 6e 6f  lgorithm..The no
1d60: 72 6d 61 6c 20 64 65 66 61 75 6c 74 20 69 73 20  rmal default is 
1d70: 41 42 4f 52 54 2e 20 20 49 66 20 61 6e 20 61 6c  ABORT.  If an al
1d80: 74 65 72 6e 61 74 69 76 65 20 69 73 20 73 70 65  ternative is spe
1d90: 63 69 66 69 65 64 20 62 79 0a 74 68 65 20 4f 4e  cified by.the ON
1da0: 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65   CONFLICT clause
1db0: 20 6f 66 20 61 20 42 45 47 49 4e 2c 20 74 68 65   of a BEGIN, the
1dc0: 6e 20 74 68 61 74 20 61 6c 74 65 72 6e 61 74 69  n that alternati
1dd0: 76 65 20 69 73 20 75 73 65 64 0a 61 73 20 74 68  ve is used.as th
1de0: 65 20 64 65 66 61 75 6c 74 20 66 6f 72 20 61 6c  e default for al
1df0: 6c 20 63 6f 6d 6d 61 6e 64 73 20 77 69 74 68 69  l commands withi
1e00: 6e 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  n the transactio
1e10: 6e 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 0a  n.  The default.
1e20: 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 6f 76 65  algorithm is ove
1e30: 72 72 69 64 64 65 6e 20 62 79 20 4f 4e 20 43 4f  rridden by ON CO
1e40: 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 73 20 6f  NFLICT clauses o
1e50: 6e 20 69 6e 64 69 76 69 64 75 61 6c 0a 63 6f 6e  n individual.con
1e60: 73 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20  straints within 
1e70: 74 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45  the CREATE TABLE
1e80: 20 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45 58   or CREATE INDEX
1e90: 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 6e 64 20   statements.and 
1ea0: 62 79 20 74 68 65 20 4f 52 20 63 6c 61 75 73 65  by the OR clause
1eb0: 73 20 6f 6e 20 43 4f 50 59 2c 20 49 4e 53 45 52  s on COPY, INSER
1ec0: 54 2c 20 61 6e 64 20 55 50 44 41 54 45 20 63 6f  T, and UPDATE co
1ed0: 6d 6d 61 6e 64 73 2e 0a 3c 2f 70 3e 0a 7d 0a 0a  mmands..</p>.}..
1ee0: 0a 53 65 63 74 69 6f 6e 20 63 6f 6d 6d 65 6e 74  .Section comment
1ef0: 20 63 6f 6d 6d 65 6e 74 0a 0a 53 79 6e 74 61 78   comment..Syntax
1f00: 20 7b 63 6f 6d 6d 65 6e 74 7d 20 7b 3c 53 51 4c   {comment} {<SQL
1f10: 2d 63 6f 6d 6d 65 6e 74 3e 20 7c 20 3c 43 2d 63  -comment> | <C-c
1f20: 6f 6d 6d 65 6e 74 3e 0a 7d 20 7b 53 51 4c 2d 63  omment>.} {SQL-c
1f30: 6f 6d 6d 65 6e 74 7d 20 7b 2d 2d 20 3c 73 69 6e  omment} {-- <sin
1f40: 67 6c 65 2d 6c 69 6e 65 3e 0a 7d 20 7b 43 2d 63  gle-line>.} {C-c
1f50: 6f 6d 6d 65 6e 74 7d 20 7b 2f 53 54 41 52 20 3c  omment} {/STAR <
1f60: 6d 75 6c 74 69 70 6c 65 2d 6c 69 6e 65 73 3e 20  multiple-lines> 
1f70: 5b 53 54 41 52 2f 5d 0a 7d 0a 0a 70 75 74 73 20  [STAR/].}..puts 
1f80: 7b 0a 3c 70 3e 20 43 6f 6d 6d 65 6e 74 73 20 61  {.<p> Comments a
1f90: 72 65 6e 27 74 20 53 51 4c 20 63 6f 6d 6d 61 6e  ren't SQL comman
1fa0: 64 73 2c 20 62 75 74 20 63 61 6e 20 6f 63 63 75  ds, but can occu
1fb0: 72 20 69 6e 20 53 51 4c 20 71 75 65 72 69 65 73  r in SQL queries
1fc0: 2e 20 54 68 65 79 20 61 72 65 20 0a 74 72 65 61  . They are .trea
1fd0: 74 65 64 20 61 73 20 77 68 69 74 65 73 70 61 63  ted as whitespac
1fe0: 65 20 62 79 20 74 68 65 20 70 61 72 73 65 72 2e  e by the parser.
1ff0: 20 20 54 68 65 79 20 63 61 6e 20 62 65 67 69 6e    They can begin
2000: 20 61 6e 79 77 68 65 72 65 20 77 68 69 74 65 73   anywhere whites
2010: 70 61 63 65 20 0a 63 61 6e 20 62 65 20 66 6f 75  pace .can be fou
2020: 6e 64 2c 20 69 6e 63 6c 75 64 69 6e 67 20 69 6e  nd, including in
2030: 73 69 64 65 20 65 78 70 72 65 73 73 69 6f 6e 73  side expressions
2040: 20 74 68 61 74 20 73 70 61 6e 20 6d 75 6c 74 69   that span multi
2050: 70 6c 65 20 6c 69 6e 65 73 2e 0a 3c 2f 70 3e 0a  ple lines..</p>.
2060: 0a 3c 70 3e 20 53 51 4c 20 63 6f 6d 6d 65 6e 74  .<p> SQL comment
2070: 73 20 6f 6e 6c 79 20 65 78 74 65 6e 64 20 74 6f  s only extend to
2080: 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20   the end of the 
2090: 63 75 72 72 65 6e 74 20 6c 69 6e 65 2e 3c 2f 70  current line.</p
20a0: 3e 0a 0a 3c 70 3e 20 43 20 63 6f 6d 6d 65 6e 74  >..<p> C comment
20b0: 73 20 63 61 6e 20 73 70 61 6e 20 61 6e 79 20 6e  s can span any n
20c0: 75 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 2e 20  umber of lines. 
20d0: 20 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20   If there is no 
20e0: 74 65 72 6d 69 6e 61 74 69 6e 67 0a 64 65 6c 69  terminating.deli
20f0: 6d 69 74 65 72 2c 20 74 68 65 79 20 65 78 74 65  miter, they exte
2100: 6e 64 20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66  nd to the end of
2110: 20 74 68 65 20 69 6e 70 75 74 2e 20 20 54 68 69   the input.  Thi
2120: 73 20 69 73 20 6e 6f 74 20 74 72 65 61 74 65 64  s is not treated
2130: 20 61 73 0a 61 6e 20 65 72 72 6f 72 2e 20 20 41   as.an error.  A
2140: 20 6e 65 77 20 53 51 4c 20 73 74 61 74 65 6d 65   new SQL stateme
2150: 6e 74 20 63 61 6e 20 62 65 67 69 6e 20 6f 6e 20  nt can begin on 
2160: 61 20 6c 69 6e 65 20 61 66 74 65 72 20 61 20 6d  a line after a m
2170: 75 6c 74 69 6c 69 6e 65 0a 63 6f 6d 6d 65 6e 74  ultiline.comment
2180: 20 65 6e 64 73 2e 20 20 43 20 63 6f 6d 6d 65 6e   ends.  C commen
2190: 74 73 20 63 61 6e 20 62 65 20 65 6d 62 65 64 64  ts can be embedd
21a0: 65 64 20 61 6e 79 77 68 65 72 65 20 77 68 69 74  ed anywhere whit
21b0: 65 73 70 61 63 65 20 63 61 6e 20 6f 63 63 75 72  espace can occur
21c0: 2c 0a 69 6e 63 6c 75 64 69 6e 67 20 69 6e 73 69  ,.including insi
21d0: 64 65 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20  de expressions, 
21e0: 61 6e 64 20 69 6e 20 74 68 65 20 6d 69 64 64 6c  and in the middl
21f0: 65 20 6f 66 20 6f 74 68 65 72 20 53 51 4c 20 73  e of other SQL s
2200: 74 61 74 65 6d 65 6e 74 73 2e 0a 43 20 63 6f 6d  tatements..C com
2210: 6d 65 6e 74 73 20 64 6f 20 6e 6f 74 20 6e 65 73  ments do not nes
2220: 74 2e 20 20 53 51 4c 20 63 6f 6d 6d 65 6e 74 73  t.  SQL comments
2230: 20 69 6e 73 69 64 65 20 61 20 43 20 63 6f 6d 6d   inside a C comm
2240: 65 6e 74 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f  ent will be igno
2250: 72 65 64 2e 0a 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  red..</p>.}...Se
2260: 63 74 69 6f 6e 20 43 4f 50 59 20 63 6f 70 79 0a  ction COPY copy.
2270: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
2280: 74 65 6d 65 6e 74 7d 20 7b 0a 43 4f 50 59 20 5b  tement} {.COPY [
2290: 20 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c   OR <conflict-al
22a0: 67 6f 72 69 74 68 6d 3e 20 5d 20 5b 3c 64 61 74  gorithm> ] [<dat
22b0: 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c  abase-name> .] <
22c0: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 46 52 4f 4d  table-name> FROM
22d0: 20 3c 66 69 6c 65 6e 61 6d 65 3e 0a 5b 20 55 53   <filename>.[ US
22e0: 49 4e 47 20 44 45 4c 49 4d 49 54 45 52 53 20 3c  ING DELIMITERS <
22f0: 64 65 6c 69 6d 3e 20 5d 0a 7d 0a 0a 70 75 74 73  delim> ].}..puts
2300: 20 7b 0a 3c 70 3e 54 68 65 20 43 4f 50 59 20 63   {.<p>The COPY c
2310: 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 65 78 74  ommand is an ext
2320: 65 6e 73 69 6f 6e 20 75 73 65 64 20 74 6f 20 6c  ension used to l
2330: 6f 61 64 20 6c 61 72 67 65 20 61 6d 6f 75 6e 74  oad large amount
2340: 73 20 6f 66 0a 64 61 74 61 20 69 6e 74 6f 20 61  s of.data into a
2350: 20 74 61 62 6c 65 2e 20 20 49 74 20 69 73 20 6d   table.  It is m
2360: 6f 64 65 6c 65 64 20 61 66 74 65 72 20 61 20 73  odeled after a s
2370: 69 6d 69 6c 61 72 20 63 6f 6d 6d 61 6e 64 20 66  imilar command f
2380: 6f 75 6e 64 0a 69 6e 20 50 6f 73 74 67 72 65 53  ound.in PostgreS
2390: 51 4c 2e 20 20 49 6e 20 66 61 63 74 2c 20 74 68  QL.  In fact, th
23a0: 65 20 53 51 4c 69 74 65 20 43 4f 50 59 20 63 6f  e SQLite COPY co
23b0: 6d 6d 61 6e 64 20 69 73 20 73 70 65 63 69 66 69  mmand is specifi
23c0: 63 61 6c 6c 79 0a 64 65 73 69 67 6e 65 64 20 74  cally.designed t
23d0: 6f 20 62 65 20 61 62 6c 65 20 74 6f 20 72 65 61  o be able to rea
23e0: 64 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20  d the output of 
23f0: 74 68 65 20 50 6f 73 74 67 72 65 53 51 4c 20 64  the PostgreSQL d
2400: 75 6d 70 0a 75 74 69 6c 69 74 79 20 3c 62 3e 70  ump.utility <b>p
2410: 67 5f 64 75 6d 70 3c 2f 62 3e 20 73 6f 20 74 68  g_dump</b> so th
2420: 61 74 20 64 61 74 61 20 63 61 6e 20 62 65 20 65  at data can be e
2430: 61 73 69 6c 79 20 74 72 61 6e 73 66 65 72 72 65  asily transferre
2440: 64 20 66 72 6f 6d 0a 50 6f 73 74 67 72 65 53 51  d from.PostgreSQ
2450: 4c 20 69 6e 74 6f 20 53 51 4c 69 74 65 2e 3c 2f  L into SQLite.</
2460: 70 3e 0a 0a 3c 70 3e 54 68 65 20 74 61 62 6c 65  p>..<p>The table
2470: 2d 6e 61 6d 65 20 69 73 20 74 68 65 20 6e 61 6d  -name is the nam
2480: 65 20 6f 66 20 61 6e 20 65 78 69 73 74 69 6e 67  e of an existing
2490: 20 74 61 62 6c 65 20 77 68 69 63 68 20 69 73 20   table which is 
24a0: 74 6f 0a 62 65 20 66 69 6c 6c 65 64 20 77 69 74  to.be filled wit
24b0: 68 20 64 61 74 61 2e 20 20 54 68 65 20 66 69 6c  h data.  The fil
24c0: 65 6e 61 6d 65 20 69 73 20 61 20 73 74 72 69 6e  ename is a strin
24d0: 67 20 6f 72 20 69 64 65 6e 74 69 66 69 65 72 20  g or identifier 
24e0: 74 68 61 74 0a 6e 61 6d 65 73 20 61 20 66 69 6c  that.names a fil
24f0: 65 20 66 72 6f 6d 20 77 68 69 63 68 20 64 61 74  e from which dat
2500: 61 20 77 69 6c 6c 20 62 65 20 72 65 61 64 2e 20  a will be read. 
2510: 20 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 63 61   The filename ca
2520: 6e 20 62 65 0a 74 68 65 20 3c 62 3e 53 54 44 49  n be.the <b>STDI
2530: 4e 3c 2f 62 3e 20 74 6f 20 72 65 61 64 20 64 61  N</b> to read da
2540: 74 61 20 66 72 6f 6d 20 73 74 61 6e 64 61 72 64  ta from standard
2550: 20 69 6e 70 75 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e   input.</p>..<p>
2560: 45 61 63 68 20 6c 69 6e 65 20 6f 66 20 74 68 65  Each line of the
2570: 20 69 6e 70 75 74 20 66 69 6c 65 20 69 73 20 63   input file is c
2580: 6f 6e 76 65 72 74 65 64 20 69 6e 74 6f 20 61 20  onverted into a 
2590: 73 69 6e 67 6c 65 20 72 65 63 6f 72 64 0a 69 6e  single record.in
25a0: 20 74 68 65 20 74 61 62 6c 65 2e 20 20 43 6f 6c   the table.  Col
25b0: 75 6d 6e 73 20 61 72 65 20 73 65 70 61 72 61 74  umns are separat
25c0: 65 64 20 62 79 20 74 61 62 73 2e 20 20 49 66 20  ed by tabs.  If 
25d0: 61 20 74 61 62 20 6f 63 63 75 72 73 20 61 73 0a  a tab occurs as.
25e0: 64 61 74 61 20 77 69 74 68 69 6e 20 61 20 63 6f  data within a co
25f0: 6c 75 6d 6e 2c 20 74 68 65 6e 20 74 68 61 74 20  lumn, then that 
2600: 74 61 62 20 69 73 20 70 72 65 63 65 64 65 64 20  tab is preceded 
2610: 62 79 20 61 20 62 61 73 6b 73 6c 61 73 68 20 22  by a baskslash "
2620: 5c 22 0a 63 68 61 72 61 63 74 65 72 2e 20 20 41  \".character.  A
2630: 20 62 61 73 6b 73 6c 61 73 68 20 69 6e 20 74 68   baskslash in th
2640: 65 20 64 61 74 61 20 61 70 70 65 61 72 73 20 61  e data appears a
2650: 73 20 74 77 6f 20 62 61 63 6b 73 6c 61 73 68 65  s two backslashe
2660: 73 20 69 6e 0a 61 20 72 6f 77 2e 20 20 54 68 65  s in.a row.  The
2670: 20 6f 70 74 69 6f 6e 61 6c 20 55 53 49 4e 47 20   optional USING 
2680: 44 45 4c 49 4d 49 54 45 52 53 20 63 6c 61 75 73  DELIMITERS claus
2690: 65 20 63 61 6e 20 73 70 65 63 69 66 79 20 61 20  e can specify a 
26a0: 64 65 6c 69 6d 69 74 65 72 0a 6f 74 68 65 72 20  delimiter.other 
26b0: 74 68 61 6e 20 74 61 62 2e 3c 2f 70 3e 0a 0a 3c  than tab.</p>..<
26c0: 70 3e 49 66 20 61 20 63 6f 6c 75 6d 6e 20 63 6f  p>If a column co
26d0: 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 63 68  nsists of the ch
26e0: 61 72 61 63 74 65 72 20 22 5c 4e 22 2c 20 74 68  aracter "\N", th
26f0: 61 74 20 63 6f 6c 75 6d 6e 20 69 73 20 66 69 6c  at column is fil
2700: 6c 65 64 0a 77 69 74 68 20 74 68 65 20 76 61 6c  led.with the val
2710: 75 65 20 4e 55 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70  ue NULL.</p>..<p
2720: 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63 6f  >The optional co
2730: 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61 6c  nflict-clause al
2740: 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66 69  lows the specifi
2750: 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c 74  cation of an alt
2760: 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72 61  ernative.constra
2770: 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  int conflict res
2780: 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68  olution algorith
2790: 6d 20 74 6f 20 75 73 65 20 66 6f 72 20 74 68 69  m to use for thi
27a0: 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e 64 2e 0a 53  s one command..S
27b0: 65 65 20 74 68 65 20 73 65 63 74 69 6f 6e 20 74  ee the section t
27c0: 69 74 6c 65 64 0a 3c 61 20 68 72 65 66 3d 22 23  itled.<a href="#
27d0: 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e  conflict">ON CON
27e0: 46 4c 49 43 54 3c 2f 61 3e 20 66 6f 72 20 61 64  FLICT</a> for ad
27f0: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
2800: 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68  tion.</p>..<p>Wh
2810: 65 6e 20 74 68 65 20 69 6e 70 75 74 20 64 61 74  en the input dat
2820: 61 20 73 6f 75 72 63 65 20 69 73 20 53 54 44 49  a source is STDI
2830: 4e 2c 20 74 68 65 20 69 6e 70 75 74 20 63 61 6e  N, the input can
2840: 20 62 65 20 74 65 72 6d 69 6e 61 74 65 64 0a 62   be terminated.b
2850: 79 20 61 20 6c 69 6e 65 20 74 68 61 74 20 63 6f  y a line that co
2860: 6e 74 61 69 6e 73 20 6f 6e 6c 79 20 61 20 62 61  ntains only a ba
2870: 73 6b 73 6c 61 73 68 20 61 6e 64 20 61 20 64 6f  skslash and a do
2880: 74 3a 7d 0a 70 75 74 73 20 22 5c 22 5b 4f 70 65  t:}.puts "\"[Ope
2890: 72 61 74 6f 72 20 5c 5c 2e 5d 5c 22 2e 3c 2f 70  rator \\.]\".</p
28a0: 3e 22 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52  >"...Section {CR
28b0: 45 41 54 45 20 49 4e 44 45 58 7d 20 63 72 65 61  EATE INDEX} crea
28c0: 74 65 69 6e 64 65 78 0a 0a 53 79 6e 74 61 78 20  teindex..Syntax 
28d0: 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20  {sql-statement} 
28e0: 7b 0a 43 52 45 41 54 45 20 5b 55 4e 49 51 55 45  {.CREATE [UNIQUE
28f0: 5d 20 49 4e 44 45 58 20 3c 69 6e 64 65 78 2d 6e  ] INDEX <index-n
2900: 61 6d 65 3e 20 0a 4f 4e 20 5b 3c 64 61 74 61 62  ame> .ON [<datab
2910: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
2920: 62 6c 65 2d 6e 61 6d 65 3e 20 28 20 3c 63 6f 6c  ble-name> ( <col
2930: 75 6d 6e 2d 6e 61 6d 65 3e 20 5b 2c 20 3c 63 6f  umn-name> [, <co
2940: 6c 75 6d 6e 2d 6e 61 6d 65 3e 5d 2a 20 29 0a 5b  lumn-name>]* ).[
2950: 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 3c 63 6f   ON CONFLICT <co
2960: 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d  nflict-algorithm
2970: 3e 20 5d 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 6e 61  > ].} {column-na
2980: 6d 65 7d 20 7b 0a 3c 6e 61 6d 65 3e 20 5b 20 41  me} {.<name> [ A
2990: 53 43 20 7c 20 44 45 53 43 20 5d 0a 7d 0a 0a 70  SC | DESC ].}..p
29a0: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43 52 45  uts {.<p>The CRE
29b0: 41 54 45 20 49 4e 44 45 58 20 63 6f 6d 6d 61 6e  ATE INDEX comman
29c0: 64 20 63 6f 6e 73 69 73 74 73 20 6f 66 20 74 68  d consists of th
29d0: 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45 41  e keywords "CREA
29e0: 54 45 20 49 4e 44 45 58 22 20 66 6f 6c 6c 6f 77  TE INDEX" follow
29f0: 65 64 0a 62 79 20 74 68 65 20 6e 61 6d 65 20 6f  ed.by the name o
2a00: 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78 2c  f the new index,
2a10: 20 74 68 65 20 6b 65 79 77 6f 72 64 20 22 4f 4e   the keyword "ON
2a20: 22 2c 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  ", the name of a
2a30: 20 70 72 65 76 69 6f 75 73 6c 79 0a 63 72 65 61   previously.crea
2a40: 74 65 64 20 74 61 62 6c 65 20 74 68 61 74 20 69  ted table that i
2a50: 73 20 74 6f 20 62 65 20 69 6e 64 65 78 65 64 2c  s to be indexed,
2a60: 20 61 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73   and a parenthes
2a70: 69 7a 65 64 20 6c 69 73 74 20 6f 66 20 6e 61 6d  ized list of nam
2a80: 65 73 20 6f 66 0a 63 6f 6c 75 6d 6e 73 20 69 6e  es of.columns in
2a90: 20 74 68 65 20 74 61 62 6c 65 20 74 68 61 74 20   the table that 
2aa0: 61 72 65 20 75 73 65 64 20 66 6f 72 20 74 68 65  are used for the
2ab0: 20 69 6e 64 65 78 20 6b 65 79 2e 0a 45 61 63 68   index key..Each
2ac0: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e   column name can
2ad0: 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20   be followed by 
2ae0: 6f 6e 65 20 6f 66 20 74 68 65 20 22 41 53 43 22  one of the "ASC"
2af0: 20 6f 72 20 22 44 45 53 43 22 20 6b 65 79 77 6f   or "DESC" keywo
2b00: 72 64 73 0a 74 6f 20 69 6e 64 69 63 61 74 65 20  rds.to indicate 
2b10: 73 6f 72 74 20 6f 72 64 65 72 2c 20 62 75 74 20  sort order, but 
2b20: 74 68 65 20 73 6f 72 74 20 6f 72 64 65 72 20 69  the sort order i
2b30: 73 20 69 67 6e 6f 72 65 64 20 69 6e 20 74 68 65  s ignored in the
2b40: 20 63 75 72 72 65 6e 74 0a 69 6d 70 6c 65 6d 65   current.impleme
2b50: 6e 74 61 74 69 6f 6e 2e 20 20 53 6f 72 74 69 6e  ntation.  Sortin
2b60: 67 20 69 73 20 61 6c 77 61 79 73 20 64 6f 6e 65  g is always done
2b70: 20 69 6e 20 61 73 63 65 6e 64 69 6e 67 20 6f 72   in ascending or
2b80: 64 65 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  der.</p>..<p>The
2b90: 72 65 20 61 72 65 20 6e 6f 20 61 72 62 69 74 72  re are no arbitr
2ba0: 61 72 79 20 6c 69 6d 69 74 73 20 6f 6e 20 74 68  ary limits on th
2bb0: 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64 69  e number of indi
2bc0: 63 65 73 20 74 68 61 74 20 63 61 6e 20 62 65 0a  ces that can be.
2bd0: 61 74 74 61 63 68 65 64 20 74 6f 20 61 20 73 69  attached to a si
2be0: 6e 67 6c 65 20 74 61 62 6c 65 2c 20 6e 6f 72 20  ngle table, nor 
2bf0: 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  on the number of
2c00: 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 61 6e 20 69   columns in an i
2c10: 6e 64 65 78 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 66  ndex.</p>..<p>If
2c20: 20 74 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77   the UNIQUE keyw
2c30: 6f 72 64 20 61 70 70 65 61 72 73 20 62 65 74 77  ord appears betw
2c40: 65 65 6e 20 43 52 45 41 54 45 20 61 6e 64 20 49  een CREATE and I
2c50: 4e 44 45 58 20 74 68 65 6e 20 64 75 70 6c 69 63  NDEX then duplic
2c60: 61 74 65 0a 69 6e 64 65 78 20 65 6e 74 72 69 65  ate.index entrie
2c70: 73 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65  s are not allowe
2c80: 64 2e 20 20 41 6e 79 20 61 74 74 65 6d 70 74 20  d.  Any attempt 
2c90: 74 6f 20 69 6e 73 65 72 74 20 61 20 64 75 70 6c  to insert a dupl
2ca0: 69 63 61 74 65 20 65 6e 74 72 79 0a 77 69 6c 6c  icate entry.will
2cb0: 20 72 65 73 75 6c 74 20 69 6e 20 61 6e 20 65 72   result in an er
2cc0: 72 6f 72 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ror.</p>..<p>The
2cd0: 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69   optional confli
2ce0: 63 74 2d 63 6c 61 75 73 65 20 61 6c 6c 6f 77 73  ct-clause allows
2cf0: 20 74 68 65 20 73 70 65 63 69 66 69 63 61 74 69   the specificati
2d00: 6f 6e 20 6f 66 20 61 6e 20 61 6c 74 65 72 6e 61  on of an alterna
2d10: 74 69 76 65 0a 64 65 66 61 75 6c 74 20 63 6f 6e  tive.default con
2d20: 73 74 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74  straint conflict
2d30: 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f   resolution algo
2d40: 72 69 74 68 6d 20 66 6f 72 20 74 68 69 73 20 69  rithm for this i
2d50: 6e 64 65 78 2e 0a 54 68 69 73 20 6f 6e 6c 79 20  ndex..This only 
2d60: 6d 61 6b 65 73 20 73 65 6e 73 65 20 69 66 20 74  makes sense if t
2d70: 68 65 20 55 4e 49 51 55 45 20 6b 65 79 77 6f 72  he UNIQUE keywor
2d80: 64 20 69 73 20 75 73 65 64 20 73 69 6e 63 65 20  d is used since 
2d90: 6f 74 68 65 72 77 69 73 65 0a 74 68 65 72 65 20  otherwise.there 
2da0: 61 72 65 20 6e 6f 74 20 63 6f 6e 73 74 72 61 69  are not constrai
2db0: 6e 74 73 20 6f 6e 20 74 68 65 20 69 6e 64 65 78  nts on the index
2dc0: 2e 20 20 54 68 65 20 64 65 66 61 75 6c 74 20 61  .  The default a
2dd0: 6c 67 6f 72 69 74 68 6d 20 69 73 0a 41 42 4f 52  lgorithm is.ABOR
2de0: 54 2e 20 20 49 66 20 61 20 43 4f 50 59 2c 20 49  T.  If a COPY, I
2df0: 4e 53 45 52 54 2c 20 6f 72 20 55 50 44 41 54 45  NSERT, or UPDATE
2e00: 20 73 74 61 74 65 6d 65 6e 74 20 73 70 65 63 69   statement speci
2e10: 66 69 65 73 20 61 20 70 61 72 74 69 63 75 6c 61  fies a particula
2e20: 72 0a 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  r.conflict resol
2e30: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2c  ution algorithm,
2e40: 20 74 68 61 74 20 61 6c 67 6f 72 69 74 68 6d 20   that algorithm 
2e50: 69 73 20 75 73 65 64 20 69 6e 20 70 6c 61 63 65  is used in place
2e60: 20 6f 66 0a 74 68 65 20 64 65 66 61 75 6c 74 20   of.the default 
2e70: 61 6c 67 6f 72 69 74 68 6d 20 73 70 65 63 69 66  algorithm specif
2e80: 69 65 64 20 68 65 72 65 2e 0a 53 65 65 20 74 68  ied here..See th
2e90: 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65 64  e section titled
2ea0: 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66 6c  .<a href="#confl
2eb0: 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43 54  ict">ON CONFLICT
2ec0: 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69 6f  </a> for additio
2ed0: 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e  nal information.
2ee0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 65 78 61  </p>..<p>The exa
2ef0: 63 74 20 74 65 78 74 0a 6f 66 20 65 61 63 68 20  ct text.of each 
2f00: 43 52 45 41 54 45 20 49 4e 44 45 58 20 73 74 61  CREATE INDEX sta
2f10: 74 65 6d 65 6e 74 20 69 73 20 73 74 6f 72 65 64  tement is stored
2f20: 20 69 6e 20 74 68 65 20 3c 62 3e 73 71 6c 69 74   in the <b>sqlit
2f30: 65 5f 6d 61 73 74 65 72 3c 2f 62 3e 0a 6f 72 20  e_master</b>.or 
2f40: 3c 62 3e 73 71 6c 69 74 65 5f 74 65 6d 70 5f 6d  <b>sqlite_temp_m
2f50: 61 73 74 65 72 3c 2f 62 3e 20 74 61 62 6c 65 2c  aster</b> table,
2f60: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68   depending on wh
2f70: 65 74 68 65 72 20 74 68 65 20 74 61 62 6c 65 0a  ether the table.
2f80: 62 65 69 6e 67 20 69 6e 64 65 78 65 64 20 69 73  being indexed is
2f90: 20 74 65 6d 70 6f 72 61 72 79 2e 20 20 45 76 65   temporary.  Eve
2fa0: 72 79 74 69 6d 65 20 74 68 65 20 64 61 74 61 62  rytime the datab
2fb0: 61 73 65 20 69 73 20 6f 70 65 6e 65 64 2c 0a 61  ase is opened,.a
2fc0: 6c 6c 20 43 52 45 41 54 45 20 49 4e 44 45 58 20  ll CREATE INDEX 
2fd0: 73 74 61 74 65 6d 65 6e 74 73 0a 61 72 65 20 72  statements.are r
2fe0: 65 61 64 20 66 72 6f 6d 20 74 68 65 20 3c 62 3e  ead from the <b>
2ff0: 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 3c 2f 62  sqlite_master</b
3000: 3e 20 74 61 62 6c 65 20 61 6e 64 20 75 73 65 64  > table and used
3010: 20 74 6f 20 72 65 67 65 6e 65 72 61 74 65 0a 53   to regenerate.S
3020: 51 4c 69 74 65 27 73 20 69 6e 74 65 72 6e 61 6c  QLite's internal
3030: 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20   representation 
3040: 6f 66 20 74 68 65 20 69 6e 64 65 78 20 6c 61 79  of the index lay
3050: 6f 75 74 2e 3c 2f 70 3e 0a 0a 3c 70 3e 49 6e 64  out.</p>..<p>Ind
3060: 65 78 65 73 20 63 61 6e 6e 6f 74 20 62 65 20 61  exes cannot be a
3070: 64 64 65 64 20 6f 6e 20 74 61 62 6c 65 73 20 69  dded on tables i
3080: 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61 62  n attached datab
3090: 61 73 65 73 2e 0a 49 6e 64 65 78 65 73 20 61 72  ases..Indexes ar
30a0: 65 20 72 65 6d 6f 76 65 64 20 77 69 74 68 20 74  e removed with t
30b0: 68 65 20 3c 61 20 68 72 65 66 3d 22 23 64 72 6f  he <a href="#dro
30c0: 70 69 6e 64 65 78 22 3e 44 52 4f 50 20 49 4e 44  pindex">DROP IND
30d0: 45 58 3c 2f 61 3e 20 0a 63 6f 6d 6d 61 6e 64 2e  EX</a> .command.
30e0: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
30f0: 20 7b 43 52 45 41 54 45 20 54 41 42 4c 45 7d 20   {CREATE TABLE} 
3100: 7b 63 72 65 61 74 65 74 61 62 6c 65 7d 0a 0a 53  {createtable}..S
3110: 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61  yntax {sql-comma
3120: 6e 64 7d 20 7b 0a 43 52 45 41 54 45 20 5b 54 45  nd} {.CREATE [TE
3130: 4d 50 20 7c 20 54 45 4d 50 4f 52 41 52 59 5d 20  MP | TEMPORARY] 
3140: 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d 6e 61 6d  TABLE <table-nam
3150: 65 3e 20 28 0a 20 20 3c 63 6f 6c 75 6d 6e 2d 64  e> (.  <column-d
3160: 65 66 3e 20 5b 2c 20 3c 63 6f 6c 75 6d 6e 2d 64  ef> [, <column-d
3170: 65 66 3e 5d 2a 0a 20 20 5b 2c 20 3c 63 6f 6e 73  ef>]*.  [, <cons
3180: 74 72 61 69 6e 74 3e 5d 2a 0a 29 0a 7d 20 7b 73  traint>]*.).} {s
3190: 71 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52  ql-command} {.CR
31a0: 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d  EATE [TEMP | TEM
31b0: 50 4f 52 41 52 59 5d 20 54 41 42 4c 45 20 3c 74  PORARY] TABLE <t
31c0: 61 62 6c 65 2d 6e 61 6d 65 3e 20 41 53 20 3c 73  able-name> AS <s
31d0: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
31e0: 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 64 65 66 7d 20  .} {column-def} 
31f0: 7b 0a 3c 6e 61 6d 65 3e 20 5b 3c 74 79 70 65 3e  {.<name> [<type>
3200: 5d 20 5b 5b 43 4f 4e 53 54 52 41 49 4e 54 20 3c  ] [[CONSTRAINT <
3210: 6e 61 6d 65 3e 5d 20 3c 63 6f 6c 75 6d 6e 2d 63  name>] <column-c
3220: 6f 6e 73 74 72 61 69 6e 74 3e 5d 2a 0a 7d 20 7b  onstraint>]*.} {
3230: 74 79 70 65 7d 20 7b 0a 3c 74 79 70 65 6e 61 6d  type} {.<typenam
3240: 65 3e 20 7c 0a 3c 74 79 70 65 6e 61 6d 65 3e 20  e> |.<typename> 
3250: 28 20 3c 6e 75 6d 62 65 72 3e 20 29 20 7c 0a 3c  ( <number> ) |.<
3260: 74 79 70 65 6e 61 6d 65 3e 20 28 20 3c 6e 75 6d  typename> ( <num
3270: 62 65 72 3e 20 2c 20 3c 6e 75 6d 62 65 72 3e 20  ber> , <number> 
3280: 29 0a 7d 20 7b 63 6f 6c 75 6d 6e 2d 63 6f 6e 73  ).} {column-cons
3290: 74 72 61 69 6e 74 7d 20 7b 0a 4e 4f 54 20 4e 55  traint} {.NOT NU
32a0: 4c 4c 20 5b 20 3c 63 6f 6e 66 6c 69 63 74 2d 63  LL [ <conflict-c
32b0: 6c 61 75 73 65 3e 20 5d 20 7c 0a 50 52 49 4d 41  lause> ] |.PRIMA
32c0: 52 59 20 4b 45 59 20 5b 3c 73 6f 72 74 2d 6f 72  RY KEY [<sort-or
32d0: 64 65 72 3e 5d 20 5b 20 3c 63 6f 6e 66 6c 69 63  der>] [ <conflic
32e0: 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 55 4e  t-clause> ] |.UN
32f0: 49 51 55 45 20 5b 20 3c 63 6f 6e 66 6c 69 63 74  IQUE [ <conflict
3300: 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48 45  -clause> ] |.CHE
3310: 43 4b 20 28 20 3c 65 78 70 72 3e 20 29 20 5b 20  CK ( <expr> ) [ 
3320: 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65  <conflict-clause
3330: 3e 20 5d 20 7c 0a 44 45 46 41 55 4c 54 20 3c 76  > ] |.DEFAULT <v
3340: 61 6c 75 65 3e 0a 7d 20 7b 63 6f 6e 73 74 72 61  alue>.} {constra
3350: 69 6e 74 7d 20 7b 0a 50 52 49 4d 41 52 59 20 4b  int} {.PRIMARY K
3360: 45 59 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73  EY ( <column-lis
3370: 74 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63 74  t> ) [ <conflict
3380: 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 55 4e 49  -clause> ] |.UNI
3390: 51 55 45 20 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69  QUE ( <column-li
33a0: 73 74 3e 20 29 20 5b 20 3c 63 6f 6e 66 6c 69 63  st> ) [ <conflic
33b0: 74 2d 63 6c 61 75 73 65 3e 20 5d 20 7c 0a 43 48  t-clause> ] |.CH
33c0: 45 43 4b 20 28 20 3c 65 78 70 72 3e 20 29 20 5b  ECK ( <expr> ) [
33d0: 20 3c 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73   <conflict-claus
33e0: 65 3e 20 5d 0a 7d 20 7b 63 6f 6e 66 6c 69 63 74  e> ].} {conflict
33f0: 2d 63 6c 61 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f  -clause} {.ON CO
3400: 4e 46 4c 49 43 54 20 3c 63 6f 6e 66 6c 69 63 74  NFLICT <conflict
3410: 2d 61 6c 67 6f 72 69 74 68 6d 3e 0a 7d 0a 0a 70  -algorithm>.}..p
3420: 75 74 73 20 7b 0a 3c 70 3e 41 20 43 52 45 41 54  uts {.<p>A CREAT
3430: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
3440: 74 20 69 73 20 62 61 73 69 63 61 6c 6c 79 20 74  t is basically t
3450: 68 65 20 6b 65 79 77 6f 72 64 73 20 22 43 52 45  he keywords "CRE
3460: 41 54 45 20 54 41 42 4c 45 22 0a 66 6f 6c 6c 6f  ATE TABLE".follo
3470: 77 65 64 20 62 79 20 74 68 65 20 6e 61 6d 65 20  wed by the name 
3480: 6f 66 20 61 20 6e 65 77 20 74 61 62 6c 65 20 61  of a new table a
3490: 6e 64 20 61 20 70 61 72 65 6e 74 68 65 73 69 7a  nd a parenthesiz
34a0: 65 64 20 6c 69 73 74 20 6f 66 20 63 6f 6c 75 6d  ed list of colum
34b0: 6e 0a 64 65 66 69 6e 69 74 69 6f 6e 73 20 61 6e  n.definitions an
34c0: 64 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20  d constraints.  
34d0: 54 68 65 20 74 61 62 6c 65 20 6e 61 6d 65 20 63  The table name c
34e0: 61 6e 20 62 65 20 65 69 74 68 65 72 20 61 6e 20  an be either an 
34f0: 69 64 65 6e 74 69 66 69 65 72 0a 6f 72 20 61 20  identifier.or a 
3500: 73 74 72 69 6e 67 2e 20 20 54 61 62 6c 65 73 20  string.  Tables 
3510: 6e 61 6d 65 73 20 74 68 61 74 20 62 65 67 69 6e  names that begin
3520: 20 77 69 74 68 20 22 3c 62 3e 73 71 6c 69 74 65   with "<b>sqlite
3530: 5f 3c 2f 62 3e 22 20 61 72 65 20 72 65 73 65 72  _</b>" are reser
3540: 76 65 64 0a 66 6f 72 20 75 73 65 20 62 79 20 74  ved.for use by t
3550: 68 65 20 65 6e 67 69 6e 65 2e 3c 2f 70 3e 0a 0a  he engine.</p>..
3560: 3c 70 3e 45 61 63 68 20 63 6f 6c 75 6d 6e 20 64  <p>Each column d
3570: 65 66 69 6e 69 74 69 6f 6e 20 69 73 20 74 68 65  efinition is the
3580: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c   name of the col
3590: 75 6d 6e 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20  umn followed by 
35a0: 74 68 65 0a 64 61 74 61 74 79 70 65 20 66 6f 72  the.datatype for
35b0: 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 74 68   that column, th
35c0: 65 6e 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f  en one or more o
35d0: 70 74 69 6f 6e 61 6c 20 63 6f 6c 75 6d 6e 20 63  ptional column c
35e0: 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 53 51 4c 69  onstraints..SQLi
35f0: 74 65 20 69 73 20 3c 61 20 68 72 65 66 3d 22 64  te is <a href="d
3600: 61 74 61 74 79 70 65 73 2e 68 74 6d 6c 22 3e 74  atatypes.html">t
3610: 79 70 65 6c 65 73 73 3c 2f 61 3e 2e 0a 54 68 65  ypeless</a>..The
3620: 20 64 61 74 61 74 79 70 65 20 66 6f 72 20 74 68   datatype for th
3630: 65 20 63 6f 6c 75 6d 6e 20 64 6f 65 73 20 6e 6f  e column does no
3640: 74 20 72 65 73 74 72 69 63 74 20 77 68 61 74 20  t restrict what 
3650: 64 61 74 61 20 6d 61 79 20 62 65 20 70 75 74 0a  data may be put.
3660: 69 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e 0a  in that column..
3670: 41 6c 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  All information 
3680: 69 73 20 73 74 6f 72 65 64 20 61 73 20 6e 75 6c  is stored as nul
3690: 6c 2d 74 65 72 6d 69 6e 61 74 65 64 20 73 74 72  l-terminated str
36a0: 69 6e 67 73 2e 0a 54 68 65 20 55 4e 49 51 55 45  ings..The UNIQUE
36b0: 20 63 6f 6e 73 74 72 61 69 6e 74 20 63 61 75 73   constraint caus
36c0: 65 73 20 61 6e 20 69 6e 64 65 78 20 74 6f 20 62  es an index to b
36d0: 65 20 63 72 65 61 74 65 64 20 6f 6e 20 74 68 65  e created on the
36e0: 20 73 70 65 63 69 66 69 65 64 0a 63 6f 6c 75 6d   specified.colum
36f0: 6e 73 2e 20 20 54 68 69 73 20 69 6e 64 65 78 20  ns.  This index 
3700: 6d 75 73 74 20 63 6f 6e 74 61 69 6e 20 75 6e 69  must contain uni
3710: 71 75 65 20 6b 65 79 73 2e 0a 54 68 65 20 44 45  que keys..The DE
3720: 46 41 55 4c 54 20 63 6f 6e 73 74 72 61 69 6e 74  FAULT constraint
3730: 0a 73 70 65 63 69 66 69 65 73 20 61 20 64 65 66  .specifies a def
3740: 61 75 6c 74 20 76 61 6c 75 65 20 74 6f 20 75 73  ault value to us
3750: 65 20 77 68 65 6e 20 64 6f 69 6e 67 20 61 6e 20  e when doing an 
3760: 49 4e 53 45 52 54 2e 0a 3c 2f 70 3e 0a 0a 3c 70  INSERT..</p>..<p
3770: 3e 53 70 65 63 69 66 79 69 6e 67 20 61 20 50 52  >Specifying a PR
3780: 49 4d 41 52 59 20 4b 45 59 20 6e 6f 72 6d 61 6c  IMARY KEY normal
3790: 6c 79 20 6a 75 73 74 20 63 72 65 61 74 65 73 20  ly just creates 
37a0: 61 20 55 4e 49 51 55 45 20 69 6e 64 65 78 0a 6f  a UNIQUE index.o
37b0: 6e 20 74 68 65 20 70 72 69 6d 61 72 79 20 6b 65  n the primary ke
37c0: 79 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20  y.  However, if 
37d0: 70 72 69 6d 61 72 79 20 6b 65 79 20 69 73 20 6f  primary key is o
37e0: 6e 20 61 20 73 69 6e 67 6c 65 20 63 6f 6c 75 6d  n a single colum
37f0: 6e 0a 74 68 61 74 20 68 61 73 20 64 61 74 61 74  n.that has datat
3800: 79 70 65 20 49 4e 54 45 47 45 52 2c 20 74 68 65  ype INTEGER, the
3810: 6e 20 74 68 61 74 20 63 6f 6c 75 6d 6e 20 69 73  n that column is
3820: 20 75 73 65 64 20 69 6e 74 65 72 6e 61 6c 6c 79   used internally
3830: 0a 61 73 20 74 68 65 20 61 63 74 75 61 6c 20 6b  .as the actual k
3840: 65 79 20 6f 66 20 74 68 65 20 42 2d 54 72 65 65  ey of the B-Tree
3850: 20 66 6f 72 20 74 68 65 20 74 61 62 6c 65 2e 20   for the table. 
3860: 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74   This means that
3870: 20 74 68 65 20 63 6f 6c 75 6d 6e 0a 6d 61 79 20   the column.may 
3880: 6f 6e 6c 79 20 68 6f 6c 64 20 75 6e 69 71 75 65  only hold unique
3890: 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 73 2e   integer values.
38a0: 20 20 28 45 78 63 65 70 74 20 66 6f 72 20 74 68    (Except for th
38b0: 69 73 20 6f 6e 65 20 63 61 73 65 2c 0a 53 51 4c  is one case,.SQL
38c0: 69 74 65 20 69 67 6e 6f 72 65 73 20 74 68 65 20  ite ignores the 
38d0: 64 61 74 61 74 79 70 65 20 73 70 65 63 69 66 69  datatype specifi
38e0: 63 61 74 69 6f 6e 20 6f 66 20 63 6f 6c 75 6d 6e  cation of column
38f0: 73 20 61 6e 64 20 61 6c 6c 6f 77 73 0a 61 6e 79  s and allows.any
3900: 20 6b 69 6e 64 20 6f 66 20 64 61 74 61 20 74 6f   kind of data to
3910: 20 62 65 20 70 75 74 20 69 6e 20 61 20 63 6f 6c   be put in a col
3920: 75 6d 6e 20 72 65 67 61 72 64 6c 65 73 73 20 6f  umn regardless o
3930: 66 20 69 74 73 20 64 65 63 6c 61 72 65 64 0a 64  f its declared.d
3940: 61 74 61 74 79 70 65 2e 29 20 20 49 66 20 61 20  atatype.)  If a 
3950: 74 61 62 6c 65 20 64 6f 65 73 20 6e 6f 74 20 68  table does not h
3960: 61 76 65 20 61 6e 20 49 4e 54 45 47 45 52 20 50  ave an INTEGER P
3970: 52 49 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d  RIMARY KEY colum
3980: 6e 2c 0a 74 68 65 6e 20 74 68 65 20 42 2d 54 72  n,.then the B-Tr
3990: 65 65 20 6b 65 79 20 77 69 6c 6c 20 62 65 20 61  ee key will be a
39a0: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67   automatically g
39b0: 65 6e 65 72 61 74 65 64 20 69 6e 74 65 67 65 72  enerated integer
39c0: 2e 20 20 54 68 65 0a 42 2d 54 72 65 65 20 6b 65  .  The.B-Tree ke
39d0: 79 20 66 6f 72 20 61 20 72 6f 77 20 63 61 6e 20  y for a row can 
39e0: 61 6c 77 61 79 73 20 62 65 20 61 63 63 65 73 73  always be access
39f0: 65 64 20 75 73 69 6e 67 20 6f 6e 65 20 6f 66 20  ed using one of 
3a00: 74 68 65 0a 73 70 65 63 69 61 6c 20 6e 61 6d 65  the.special name
3a10: 73 20 22 3c 62 3e 52 4f 57 49 44 3c 2f 62 3e 22  s "<b>ROWID</b>"
3a20: 2c 20 22 3c 62 3e 4f 49 44 3c 2f 62 3e 22 2c 20  , "<b>OID</b>", 
3a30: 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44 5f 3c 2f  or "<b>_ROWID_</
3a40: 62 3e 22 2e 0a 54 68 69 73 20 69 73 20 74 72 75  b>"..This is tru
3a50: 65 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20  e regardless of 
3a60: 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 74  whether or not t
3a70: 68 65 72 65 20 69 73 20 61 6e 20 49 4e 54 45 47  here is an INTEG
3a80: 45 52 0a 50 52 49 4d 41 52 59 20 4b 45 59 2e 3c  ER.PRIMARY KEY.<
3a90: 2f 70 3e 0a 0a 3c 70 3e 49 66 20 74 68 65 20 22  /p>..<p>If the "
3aa0: 54 45 4d 50 22 20 6f 72 20 22 54 45 4d 50 4f 52  TEMP" or "TEMPOR
3ab0: 41 52 59 22 20 6b 65 79 77 6f 72 64 20 6f 63 63  ARY" keyword occ
3ac0: 75 72 73 20 69 6e 20 62 65 74 77 65 65 6e 20 22  urs in between "
3ad0: 43 52 45 41 54 45 22 0a 61 6e 64 20 22 54 41 42  CREATE".and "TAB
3ae0: 4c 45 22 20 74 68 65 6e 20 74 68 65 20 74 61 62  LE" then the tab
3af0: 6c 65 20 74 68 61 74 20 69 73 20 63 72 65 61 74  le that is creat
3b00: 65 64 20 69 73 20 6f 6e 6c 79 20 76 69 73 69 62  ed is only visib
3b10: 6c 65 20 74 6f 20 74 68 65 0a 70 72 6f 63 65 73  le to the.proces
3b20: 73 20 74 68 61 74 20 6f 70 65 6e 65 64 20 74 68  s that opened th
3b30: 65 20 64 61 74 61 62 61 73 65 20 61 6e 64 20 69  e database and i
3b40: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  s automatically 
3b50: 64 65 6c 65 74 65 64 20 77 68 65 6e 0a 74 68 65  deleted when.the
3b60: 20 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f   database is clo
3b70: 73 65 64 2e 20 20 41 6e 79 20 69 6e 64 69 63 65  sed.  Any indice
3b80: 73 20 63 72 65 61 74 65 64 20 6f 6e 20 61 20 74  s created on a t
3b90: 65 6d 70 6f 72 61 72 79 20 74 61 62 6c 65 0a 61  emporary table.a
3ba0: 72 65 20 61 6c 73 6f 20 74 65 6d 70 6f 72 61 72  re also temporar
3bb0: 79 2e 20 20 54 65 6d 70 6f 72 61 72 79 20 74 61  y.  Temporary ta
3bc0: 62 6c 65 73 20 61 6e 64 20 69 6e 64 69 63 65 73  bles and indices
3bd0: 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e 20 61   are stored in a
3be0: 0a 73 65 70 61 72 61 74 65 20 66 69 6c 65 20 64  .separate file d
3bf0: 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 74 68 65  istinct from the
3c00: 20 6d 61 69 6e 20 64 61 74 61 62 61 73 65 20 66   main database f
3c10: 69 6c 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65  ile.</p>..<p>The
3c20: 20 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 66 6c 69   optional confli
3c30: 63 74 2d 63 6c 61 75 73 65 20 66 6f 6c 6c 6f 77  ct-clause follow
3c40: 69 6e 67 20 65 61 63 68 20 63 6f 6e 73 74 72 61  ing each constra
3c50: 69 6e 74 0a 61 6c 6c 6f 77 73 20 74 68 65 20 73  int.allows the s
3c60: 70 65 63 69 66 69 63 61 74 69 6f 6e 20 6f 66 20  pecification of 
3c70: 61 6e 20 61 6c 74 65 72 6e 61 74 69 76 65 20 64  an alternative d
3c80: 65 66 61 75 6c 74 0a 63 6f 6e 73 74 72 61 69 6e  efault.constrain
3c90: 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f 6c  t conflict resol
3ca0: 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ution algorithm 
3cb0: 66 6f 72 20 74 68 61 74 20 63 6f 6e 73 74 72 61  for that constra
3cc0: 69 6e 74 2e 0a 54 68 65 20 64 65 66 61 75 6c 74  int..The default
3cd0: 20 69 73 20 61 62 6f 72 74 20 41 42 4f 52 54 2e   is abort ABORT.
3ce0: 20 20 44 69 66 66 65 72 65 6e 74 20 63 6f 6e 73    Different cons
3cf0: 74 72 61 69 6e 74 73 20 77 69 74 68 69 6e 20 74  traints within t
3d00: 68 65 20 73 61 6d 65 0a 74 61 62 6c 65 20 6d 61  he same.table ma
3d10: 79 20 68 61 76 65 20 64 69 66 66 65 72 65 6e 74  y have different
3d20: 20 64 65 66 61 75 6c 74 20 63 6f 6e 66 6c 69 63   default conflic
3d30: 74 20 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67  t resolution alg
3d40: 6f 72 69 74 68 6d 73 2e 0a 49 66 20 61 6e 20 43  orithms..If an C
3d50: 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 6f 72 20  OPY, INSERT, or 
3d60: 55 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 20 73  UPDATE command s
3d70: 70 65 63 69 66 69 65 73 20 61 20 64 69 66 66 65  pecifies a diffe
3d80: 72 65 6e 74 20 63 6f 6e 66 6c 69 63 74 0a 72 65  rent conflict.re
3d90: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
3da0: 68 6d 2c 20 74 68 65 6e 20 74 68 61 74 20 61 6c  hm, then that al
3db0: 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64 20  gorithm is used 
3dc0: 69 6e 20 70 6c 61 63 65 20 6f 66 20 74 68 65 0a  in place of the.
3dd0: 64 65 66 61 75 6c 74 20 61 6c 67 6f 72 69 74 68  default algorith
3de0: 6d 20 73 70 65 63 69 66 69 65 64 20 69 6e 20 74  m specified in t
3df0: 68 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  he CREATE TABLE 
3e00: 73 74 61 74 65 6d 65 6e 74 2e 0a 53 65 65 20 74  statement..See t
3e10: 68 65 20 73 65 63 74 69 6f 6e 20 74 69 74 6c 65  he section title
3e20: 64 0a 3c 61 20 68 72 65 66 3d 22 23 63 6f 6e 66  d.<a href="#conf
3e30: 6c 69 63 74 22 3e 4f 4e 20 43 4f 4e 46 4c 49 43  lict">ON CONFLIC
3e40: 54 3c 2f 61 3e 20 66 6f 72 20 61 64 64 69 74 69  T</a> for additi
3e50: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
3e60: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 43 48 45 43 4b 20  .</p>..<p>CHECK 
3e70: 63 6f 6e 73 74 72 61 69 6e 74 73 20 61 72 65 20  constraints are 
3e80: 69 67 6e 6f 72 65 64 20 69 6e 20 74 68 65 20 63  ignored in the c
3e90: 75 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74  urrent implement
3ea0: 61 74 69 6f 6e 2e 0a 53 75 70 70 6f 72 74 20 66  ation..Support f
3eb0: 6f 72 20 43 48 45 43 4b 20 63 6f 6e 73 74 72 61  or CHECK constra
3ec0: 69 6e 74 73 20 6d 61 79 20 62 65 20 61 64 64 65  ints may be adde
3ed0: 64 20 69 6e 20 74 68 65 20 66 75 74 75 72 65 2e  d in the future.
3ee0: 20 20 41 73 20 6f 66 0a 76 65 72 73 69 6f 6e 20    As of.version 
3ef0: 32 2e 33 2e 30 2c 20 4e 4f 54 20 4e 55 4c 4c 2c  2.3.0, NOT NULL,
3f00: 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 61 6e   PRIMARY KEY, an
3f10: 64 20 55 4e 49 51 55 45 20 63 6f 6e 73 74 72 61  d UNIQUE constra
3f20: 69 6e 74 73 20 61 6c 6c 0a 77 6f 72 6b 2e 3c 2f  ints all.work.</
3f30: 70 3e 0a 0a 3c 70 3e 54 68 65 72 65 20 61 72 65  p>..<p>There are
3f40: 20 6e 6f 20 61 72 62 69 74 72 61 72 79 20 6c 69   no arbitrary li
3f50: 6d 69 74 73 20 6f 6e 20 74 68 65 20 6e 75 6d 62  mits on the numb
3f60: 65 72 0a 6f 66 20 63 6f 6c 75 6d 6e 73 20 6f 72  er.of columns or
3f70: 20 6f 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f   on the number o
3f80: 66 20 63 6f 6e 73 74 72 61 69 6e 74 73 20 69 6e  f constraints in
3f90: 20 61 20 74 61 62 6c 65 2e 0a 54 68 65 20 74 6f   a table..The to
3fa0: 74 61 6c 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61  tal amount of da
3fb0: 74 61 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 72  ta in a single r
3fc0: 6f 77 20 69 73 20 6c 69 6d 69 74 65 64 20 74 6f  ow is limited to
3fd0: 20 61 62 6f 75 74 0a 31 20 6d 65 67 61 62 79 74   about.1 megabyt
3fe0: 65 73 2e 20 20 28 54 68 69 73 20 6c 69 6d 69 74  es.  (This limit
3ff0: 20 63 61 6e 20 62 65 20 69 6e 63 72 65 61 73 65   can be increase
4000: 64 20 74 6f 20 31 36 4d 42 20 62 79 20 63 68 61  d to 16MB by cha
4010: 6e 67 69 6e 67 0a 61 20 73 69 6e 67 6c 65 20 23  nging.a single #
4020: 64 65 66 69 6e 65 20 69 6e 20 74 68 65 20 73 6f  define in the so
4030: 75 72 63 65 20 63 6f 64 65 20 61 6e 64 20 72 65  urce code and re
4040: 63 6f 6d 70 69 6c 69 6e 67 2e 29 3c 2f 70 3e 0a  compiling.)</p>.
4050: 0a 3c 70 3e 54 68 65 20 43 52 45 41 54 45 20 54  .<p>The CREATE T
4060: 41 42 4c 45 20 41 53 20 66 6f 72 6d 20 64 65 66  ABLE AS form def
4070: 69 6e 65 73 20 74 68 65 20 74 61 62 6c 65 20 74  ines the table t
4080: 6f 20 62 65 0a 74 68 65 20 72 65 73 75 6c 74 20  o be.the result 
4090: 73 65 74 20 6f 66 20 61 20 71 75 65 72 79 2e 20  set of a query. 
40a0: 20 54 68 65 20 6e 61 6d 65 73 20 6f 66 20 74 68   The names of th
40b0: 65 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73 20  e table columns 
40c0: 61 72 65 0a 74 68 65 20 6e 61 6d 65 73 20 6f 66  are.the names of
40d0: 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20   the columns in 
40e0: 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f 70 3e 0a  the result.</p>.
40f0: 0a 3c 70 3e 54 68 65 20 65 78 61 63 74 20 74 65  .<p>The exact te
4100: 78 74 0a 6f 66 20 65 61 63 68 20 43 52 45 41 54  xt.of each CREAT
4110: 45 20 54 41 42 4c 45 20 73 74 61 74 65 6d 65 6e  E TABLE statemen
4120: 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 74  t is stored in t
4130: 68 65 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73  he <b>sqlite_mas
4140: 74 65 72 3c 2f 62 3e 0a 74 61 62 6c 65 2e 20 20  ter</b>.table.  
4150: 45 76 65 72 79 74 69 6d 65 20 74 68 65 20 64 61  Everytime the da
4160: 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65 64  tabase is opened
4170: 2c 20 61 6c 6c 20 43 52 45 41 54 45 20 54 41 42  , all CREATE TAB
4180: 4c 45 20 73 74 61 74 65 6d 65 6e 74 73 0a 61 72  LE statements.ar
4190: 65 20 72 65 61 64 20 66 72 6f 6d 20 74 68 65 20  e read from the 
41a0: 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65 72  <b>sqlite_master
41b0: 3c 2f 62 3e 20 74 61 62 6c 65 20 61 6e 64 20 75  </b> table and u
41c0: 73 65 64 20 74 6f 20 72 65 67 65 6e 65 72 61 74  sed to regenerat
41d0: 65 0a 53 51 4c 69 74 65 27 73 20 69 6e 74 65 72  e.SQLite's inter
41e0: 6e 61 6c 20 72 65 70 72 65 73 65 6e 74 61 74 69  nal representati
41f0: 6f 6e 20 6f 66 20 74 68 65 20 74 61 62 6c 65 20  on of the table 
4200: 6c 61 79 6f 75 74 2e 0a 49 66 20 74 68 65 20 6f  layout..If the o
4210: 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e 64 20  riginal command 
4220: 77 61 73 20 61 20 43 52 45 41 54 45 20 54 41 42  was a CREATE TAB
4230: 4c 45 20 41 53 20 74 68 65 6e 20 74 68 65 6e 20  LE AS then then 
4240: 61 6e 20 65 71 75 69 76 61 6c 65 6e 74 0a 43 52  an equivalent.CR
4250: 45 41 54 45 20 54 41 42 4c 45 20 73 74 61 74 65  EATE TABLE state
4260: 6d 65 6e 74 20 69 73 20 73 79 6e 74 68 65 73 69  ment is synthesi
4270: 7a 65 64 20 61 6e 64 20 73 74 6f 72 65 20 69 6e  zed and store in
4280: 20 3c 62 3e 73 71 6c 69 74 65 5f 6d 61 73 74 65   <b>sqlite_maste
4290: 72 3c 2f 62 3e 0a 69 6e 20 70 6c 61 63 65 20 6f  r</b>.in place o
42a0: 66 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 63  f the original c
42b0: 6f 6d 6d 61 6e 64 2e 0a 54 68 65 20 74 65 78 74  ommand..The text
42c0: 20 6f 66 20 43 52 45 41 54 45 20 54 45 4d 50 4f   of CREATE TEMPO
42d0: 52 41 52 59 20 54 41 42 4c 45 20 73 74 61 74 65  RARY TABLE state
42e0: 6d 65 6e 74 73 20 61 72 65 20 73 74 6f 72 65 64  ments are stored
42f0: 20 69 6e 20 74 68 65 0a 3c 62 3e 73 71 6c 69 74   in the.<b>sqlit
4300: 65 5f 74 65 6d 70 5f 6d 61 73 74 65 72 3c 2f 62  e_temp_master</b
4310: 3e 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a 0a 3c  > table..</p>..<
4320: 70 3e 54 61 62 6c 65 73 20 61 72 65 20 72 65 6d  p>Tables are rem
4330: 6f 76 65 64 20 75 73 69 6e 67 20 74 68 65 20 3c  oved using the <
4340: 61 20 68 72 65 66 3d 22 23 64 72 6f 70 74 61 62  a href="#droptab
4350: 6c 65 22 3e 44 52 4f 50 20 54 41 42 4c 45 3c 2f  le">DROP TABLE</
4360: 61 3e 20 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20  a> .statement.  
4370: 4e 6f 6e 2d 74 65 6d 70 6f 72 61 72 79 20 74 61  Non-temporary ta
4380: 62 6c 65 73 20 69 6e 20 61 6e 20 61 74 74 61 63  bles in an attac
4390: 68 65 64 20 64 61 74 61 62 61 73 65 20 63 61 6e  hed database can
43a0: 6e 6f 74 20 62 65 20 0a 64 72 6f 70 70 65 64 2e  not be .dropped.
43b0: 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  </p>.}...Section
43c0: 20 7b 43 52 45 41 54 45 20 54 52 49 47 47 45 52   {CREATE TRIGGER
43d0: 7d 20 63 72 65 61 74 65 74 72 69 67 67 65 72 0a  } createtrigger.
43e0: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61  .Syntax {sql-sta
43f0: 74 65 6d 65 6e 74 7d 20 7b 0a 43 52 45 41 54 45  tement} {.CREATE
4400: 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50 4f 52 41   [TEMP | TEMPORA
4410: 52 59 5d 20 54 52 49 47 47 45 52 20 3c 74 72 69  RY] TRIGGER <tri
4420: 67 67 65 72 2d 6e 61 6d 65 3e 20 5b 20 42 45 46  gger-name> [ BEF
4430: 4f 52 45 20 7c 20 41 46 54 45 52 20 5d 0a 3c 64  ORE | AFTER ].<d
4440: 61 74 61 62 61 73 65 2d 65 76 65 6e 74 3e 20 4f  atabase-event> O
4450: 4e 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d  N [<database-nam
4460: 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d  e> .] <table-nam
4470: 65 3e 0a 3c 74 72 69 67 67 65 72 2d 61 63 74 69  e>.<trigger-acti
4480: 6f 6e 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 73  on>.}..Syntax {s
4490: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a  ql-statement} {.
44a0: 43 52 45 41 54 45 20 5b 54 45 4d 50 20 7c 20 54  CREATE [TEMP | T
44b0: 45 4d 50 4f 52 41 52 59 5d 20 54 52 49 47 47 45  EMPORARY] TRIGGE
44c0: 52 20 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e  R <trigger-name>
44d0: 20 49 4e 53 54 45 41 44 20 4f 46 0a 3c 64 61 74   INSTEAD OF.<dat
44e0: 61 62 61 73 65 2d 65 76 65 6e 74 3e 20 4f 4e 20  abase-event> ON 
44f0: 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e  [<database-name>
4500: 20 2e 5d 20 3c 76 69 65 77 2d 6e 61 6d 65 3e 0a   .] <view-name>.
4510: 3c 74 72 69 67 67 65 72 2d 61 63 74 69 6f 6e 3e  <trigger-action>
4520: 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 64 61 74 61  .}..Syntax {data
4530: 62 61 73 65 2d 65 76 65 6e 74 7d 20 7b 0a 44 45  base-event} {.DE
4540: 4c 45 54 45 20 7c 20 0a 49 4e 53 45 52 54 20 7c  LETE | .INSERT |
4550: 20 0a 55 50 44 41 54 45 20 7c 20 0a 55 50 44 41   .UPDATE | .UPDA
4560: 54 45 20 4f 46 20 3c 63 6f 6c 75 6d 6e 2d 6c 69  TE OF <column-li
4570: 73 74 3e 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 74  st>.}..Syntax {t
4580: 72 69 67 67 65 72 2d 61 63 74 69 6f 6e 7d 20 7b  rigger-action} {
4590: 0a 5b 20 46 4f 52 20 45 41 43 48 20 52 4f 57 20  .[ FOR EACH ROW 
45a0: 7c 20 46 4f 52 20 45 41 43 48 20 53 54 41 54 45  | FOR EACH STATE
45b0: 4d 45 4e 54 20 5d 20 5b 20 57 48 45 4e 20 3c 65  MENT ] [ WHEN <e
45c0: 78 70 72 65 73 73 69 6f 6e 3e 20 5d 20 0a 42 45  xpression> ] .BE
45d0: 47 49 4e 20 0a 20 20 3c 74 72 69 67 67 65 72 2d  GIN .  <trigger-
45e0: 73 74 65 70 3e 20 3b 20 5b 20 3c 74 72 69 67 67  step> ; [ <trigg
45f0: 65 72 2d 73 74 65 70 3e 20 3b 20 5d 2a 0a 45 4e  er-step> ; ]*.EN
4600: 44 0a 7d 0a 0a 53 79 6e 74 61 78 20 7b 74 72 69  D.}..Syntax {tri
4610: 67 67 65 72 2d 73 74 65 70 7d 20 7b 0a 3c 75 70  gger-step} {.<up
4620: 64 61 74 65 2d 73 74 61 74 65 6d 65 6e 74 3e 20  date-statement> 
4630: 7c 20 3c 69 6e 73 65 72 74 2d 73 74 61 74 65 6d  | <insert-statem
4640: 65 6e 74 3e 20 7c 20 0a 3c 64 65 6c 65 74 65 2d  ent> | .<delete-
4650: 73 74 61 74 65 6d 65 6e 74 3e 20 7c 20 3c 73 65  statement> | <se
4660: 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 20  lect-statement> 
4670: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
4680: 65 20 43 52 45 41 54 45 20 54 52 49 47 47 45 52  e CREATE TRIGGER
4690: 20 73 74 61 74 65 6d 65 6e 74 20 69 73 20 75 73   statement is us
46a0: 65 64 20 74 6f 20 61 64 64 20 74 72 69 67 67 65  ed to add trigge
46b0: 72 73 20 74 6f 20 74 68 65 20 0a 64 61 74 61 62  rs to the .datab
46c0: 61 73 65 20 73 63 68 65 6d 61 2e 20 54 72 69 67  ase schema. Trig
46d0: 67 65 72 73 20 61 72 65 20 64 61 74 61 62 61 73  gers are databas
46e0: 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 28 74 68  e operations (th
46f0: 65 20 3c 69 3e 74 72 69 67 67 65 72 2d 61 63 74  e <i>trigger-act
4700: 69 6f 6e 3c 2f 69 3e 29 20 0a 74 68 61 74 20 61  ion</i>) .that a
4710: 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79  re automatically
4720: 20 70 65 72 66 6f 72 6d 65 64 20 77 68 65 6e 20   performed when 
4730: 61 20 73 70 65 63 69 66 69 65 64 20 64 61 74 61  a specified data
4740: 62 61 73 65 20 65 76 65 6e 74 20 28 74 68 65 0a  base event (the.
4750: 3c 69 3e 64 61 74 61 62 61 73 65 2d 65 76 65 6e  <i>database-even
4760: 74 3c 2f 69 3e 29 20 6f 63 63 75 72 73 2e 20 20  t</i>) occurs.  
4770: 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 74 72 69 67 67  </p>..<p>A trigg
4780: 65 72 20 6d 61 79 20 62 65 20 73 70 65 63 69 66  er may be specif
4790: 69 65 64 20 74 6f 20 66 69 72 65 20 77 68 65 6e  ied to fire when
47a0: 65 76 65 72 20 61 20 44 45 4c 45 54 45 2c 20 49  ever a DELETE, I
47b0: 4e 53 45 52 54 20 6f 72 20 55 50 44 41 54 45 20  NSERT or UPDATE 
47c0: 6f 66 20 61 0a 70 61 72 74 69 63 75 6c 61 72 20  of a.particular 
47d0: 64 61 74 61 62 61 73 65 20 74 61 62 6c 65 20 6f  database table o
47e0: 63 63 75 72 73 2c 20 6f 72 20 77 68 65 6e 65 76  ccurs, or whenev
47f0: 65 72 20 61 6e 20 55 50 44 41 54 45 20 6f 66 20  er an UPDATE of 
4800: 6f 6e 65 20 6f 72 20 6d 6f 72 65 0a 73 70 65 63  one or more.spec
4810: 69 66 69 65 64 20 63 6f 6c 75 6d 6e 73 20 6f 66  ified columns of
4820: 20 61 20 74 61 62 6c 65 20 61 72 65 20 75 70 64   a table are upd
4830: 61 74 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 74  ated.</p>..<p>At
4840: 20 74 68 69 73 20 74 69 6d 65 20 53 51 4c 69 74   this time SQLit
4850: 65 20 73 75 70 70 6f 72 74 73 20 6f 6e 6c 79 20  e supports only 
4860: 46 4f 52 20 45 41 43 48 20 52 4f 57 20 74 72 69  FOR EACH ROW tri
4870: 67 67 65 72 73 2c 20 6e 6f 74 20 46 4f 52 20 45  ggers, not FOR E
4880: 41 43 48 0a 53 54 41 54 45 4d 45 4e 54 20 74 72  ACH.STATEMENT tr
4890: 69 67 67 65 72 73 2e 20 48 65 6e 63 65 20 65 78  iggers. Hence ex
48a0: 70 6c 69 63 69 74 6c 79 20 73 70 65 63 69 66 79  plicitly specify
48b0: 69 6e 67 20 46 4f 52 20 45 41 43 48 20 52 4f 57  ing FOR EACH ROW
48c0: 20 69 73 20 6f 70 74 69 6f 6e 61 6c 2e 20 20 46   is optional.  F
48d0: 4f 52 0a 45 41 43 48 20 52 4f 57 20 69 6d 70 6c  OR.EACH ROW impl
48e0: 69 65 73 20 74 68 61 74 20 74 68 65 20 53 51 4c  ies that the SQL
48f0: 20 73 74 61 74 65 6d 65 6e 74 73 20 73 70 65 63   statements spec
4900: 69 66 69 65 64 20 61 73 20 3c 69 3e 74 72 69 67  ified as <i>trig
4910: 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 0a 6d  ger-steps</i> .m
4920: 61 79 20 62 65 20 65 78 65 63 75 74 65 64 20 28  ay be executed (
4930: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65  depending on the
4940: 20 57 48 45 4e 20 63 6c 61 75 73 65 29 20 66 6f   WHEN clause) fo
4950: 72 20 65 61 63 68 20 64 61 74 61 62 61 73 65 20  r each database 
4960: 72 6f 77 20 62 65 69 6e 67 0a 69 6e 73 65 72 74  row being.insert
4970: 65 64 2c 20 75 70 64 61 74 65 64 20 6f 72 20 64  ed, updated or d
4980: 65 6c 65 74 65 64 20 62 79 20 74 68 65 20 73 74  eleted by the st
4990: 61 74 65 6d 65 6e 74 20 63 61 75 73 69 6e 67 20  atement causing 
49a0: 74 68 65 20 74 72 69 67 67 65 72 20 74 6f 20 66  the trigger to f
49b0: 69 72 65 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74  ire.</p>..<p>Bot
49c0: 68 20 74 68 65 20 57 48 45 4e 20 63 6c 61 75 73  h the WHEN claus
49d0: 65 20 61 6e 64 20 74 68 65 20 3c 69 3e 74 72 69  e and the <i>tri
49e0: 67 67 65 72 2d 73 74 65 70 73 3c 2f 69 3e 20 6d  gger-steps</i> m
49f0: 61 79 20 61 63 63 65 73 73 20 65 6c 65 6d 65 6e  ay access elemen
4a00: 74 73 20 6f 66 20 0a 74 68 65 20 72 6f 77 20 62  ts of .the row b
4a10: 65 69 6e 67 20 69 6e 73 65 72 74 65 64 2c 20 64  eing inserted, d
4a20: 65 6c 65 74 65 64 20 6f 72 20 75 70 64 61 74 65  eleted or update
4a30: 64 20 75 73 69 6e 67 20 72 65 66 65 72 65 6e 63  d using referenc
4a40: 65 73 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 0a  es of the form .
4a50: 22 4e 45 57 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e  "NEW.<i>column-n
4a60: 61 6d 65 3c 2f 69 3e 22 20 61 6e 64 20 22 4f 4c  ame</i>" and "OL
4a70: 44 2e 3c 69 3e 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  D.<i>column-name
4a80: 3c 2f 69 3e 22 2c 20 77 68 65 72 65 0a 3c 69 3e  </i>", where.<i>
4a90: 63 6f 6c 75 6d 6e 2d 6e 61 6d 65 3c 2f 69 3e 20  column-name</i> 
4aa0: 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61  is the name of a
4ab0: 20 63 6f 6c 75 6d 6e 20 66 72 6f 6d 20 74 68 65   column from the
4ac0: 20 74 61 62 6c 65 20 74 68 61 74 20 74 68 65 20   table that the 
4ad0: 74 72 69 67 67 65 72 0a 69 73 20 61 73 73 6f 63  trigger.is assoc
4ae0: 69 61 74 65 64 20 77 69 74 68 2e 20 4f 4c 44 20  iated with. OLD 
4af0: 61 6e 64 20 4e 45 57 20 72 65 66 65 72 65 6e 63  and NEW referenc
4b00: 65 73 20 6d 61 79 20 6f 6e 6c 79 20 62 65 20 75  es may only be u
4b10: 73 65 64 20 69 6e 20 74 72 69 67 67 65 72 73 20  sed in triggers 
4b20: 6f 6e 0a 3c 69 3e 74 72 69 67 67 65 72 2d 65 76  on.<i>trigger-ev
4b30: 65 6e 74 3c 2f 69 3e 73 20 66 6f 72 20 77 68 69  ent</i>s for whi
4b40: 63 68 20 74 68 65 79 20 61 72 65 20 72 65 6c 65  ch they are rele
4b50: 76 61 6e 74 2c 20 61 73 20 66 6f 6c 6c 6f 77 73  vant, as follows
4b60: 3a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f  :</p>..<table bo
4b70: 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69  rder=0 cellpaddi
4b80: 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20  ng=10>.<tr>.<td 
4b90: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
4ba0: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
4bb0: 3d 31 32 30 3e 3c 69 3e 49 4e 53 45 52 54 3c 2f  =120><i>INSERT</
4bc0: 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  i></td>.<td vali
4bd0: 67 6e 3d 22 74 6f 70 22 3e 4e 45 57 20 72 65 66  gn="top">NEW ref
4be0: 65 72 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69  erences are vali
4bf0: 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72  d</td>.</tr>.<tr
4c00: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
4c10: 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22  p" align="right"
4c20: 20 77 69 64 74 68 3d 31 32 30 3e 3c 69 3e 55 50   width=120><i>UP
4c30: 44 41 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74  DATE</i></td>.<t
4c40: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4e  d valign="top">N
4c50: 45 57 20 61 6e 64 20 4f 4c 44 20 72 65 66 65 72  EW and OLD refer
4c60: 65 6e 63 65 73 20 61 72 65 20 76 61 6c 69 64 3c  ences are valid<
4c70: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 74 72 3e 0a  /td>.</tr>.<tr>.
4c80: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
4c90: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77   align="right" w
4ca0: 69 64 74 68 3d 31 32 30 3e 3c 69 3e 44 45 4c 45  idth=120><i>DELE
4cb0: 54 45 3c 2f 69 3e 3c 2f 74 64 3e 0a 3c 74 64 20  TE</i></td>.<td 
4cc0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 4f 4c 44  valign="top">OLD
4cd0: 20 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20   references are 
4ce0: 76 61 6c 69 64 3c 2f 74 64 3e 0a 3c 2f 74 72 3e  valid</td>.</tr>
4cf0: 0a 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 70 3e 0a 0a  .</table>.</p>..
4d00: 3c 70 3e 49 66 20 61 20 57 48 45 4e 20 63 6c 61  <p>If a WHEN cla
4d10: 75 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c  use is supplied,
4d20: 20 74 68 65 20 53 51 4c 20 73 74 61 74 65 6d 65   the SQL stateme
4d30: 6e 74 73 20 73 70 65 63 69 66 69 65 64 20 61 73  nts specified as
4d40: 20 3c 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70   <i>trigger-step
4d50: 73 3c 2f 69 3e 20 61 72 65 20 6f 6e 6c 79 20 65  s</i> are only e
4d60: 78 65 63 75 74 65 64 20 66 6f 72 20 72 6f 77 73  xecuted for rows
4d70: 20 66 6f 72 20 77 68 69 63 68 20 74 68 65 20 57   for which the W
4d80: 48 45 4e 20 63 6c 61 75 73 65 20 69 73 20 74 72  HEN clause is tr
4d90: 75 65 2e 20 49 66 20 6e 6f 20 57 48 45 4e 20 63  ue. If no WHEN c
4da0: 6c 61 75 73 65 20 69 73 20 73 75 70 70 6c 69 65  lause is supplie
4db0: 64 2c 20 74 68 65 20 53 51 4c 20 73 74 61 74 65  d, the SQL state
4dc0: 6d 65 6e 74 73 20 61 72 65 20 65 78 65 63 75 74  ments are execut
4dd0: 65 64 20 66 6f 72 20 61 6c 6c 20 72 6f 77 73 2e  ed for all rows.
4de0: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 70 65  </p>..<p>The spe
4df0: 63 69 66 69 65 64 20 3c 69 3e 74 72 69 67 67 65  cified <i>trigge
4e00: 72 2d 74 69 6d 65 3c 2f 69 3e 20 64 65 74 65 72  r-time</i> deter
4e10: 6d 69 6e 65 73 20 77 68 65 6e 20 74 68 65 20 3c  mines when the <
4e20: 69 3e 74 72 69 67 67 65 72 2d 73 74 65 70 73 3c  i>trigger-steps<
4e30: 2f 69 3e 0a 77 69 6c 6c 20 62 65 20 65 78 65 63  /i>.will be exec
4e40: 75 74 65 64 20 72 65 6c 61 74 69 76 65 20 74 6f  uted relative to
4e50: 20 74 68 65 20 69 6e 73 65 72 74 69 6f 6e 2c 20   the insertion, 
4e60: 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 72 20  modification or 
4e70: 72 65 6d 6f 76 61 6c 20 6f 66 20 74 68 65 0a 61  removal of the.a
4e80: 73 73 6f 63 69 61 74 65 64 20 72 6f 77 2e 3c 2f  ssociated row.</
4e90: 70 3e 0a 0a 3c 70 3e 41 6e 20 4f 4e 20 43 4f 4e  p>..<p>An ON CON
4ea0: 46 4c 49 43 54 20 63 6c 61 75 73 65 20 6d 61 79  FLICT clause may
4eb0: 20 62 65 20 73 70 65 63 69 66 69 65 64 20 61 73   be specified as
4ec0: 20 70 61 72 74 20 6f 66 20 61 6e 20 55 50 44 41   part of an UPDA
4ed0: 54 45 20 6f 72 20 49 4e 53 45 52 54 0a 3c 69 3e  TE or INSERT.<i>
4ee0: 74 72 69 67 67 65 72 2d 73 74 65 70 3c 2f 69 3e  trigger-step</i>
4ef0: 2e 20 48 6f 77 65 76 65 72 20 69 66 20 61 6e 20  . However if an 
4f00: 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75  ON CONFLICT clau
4f10: 73 65 20 69 73 20 73 70 65 63 69 66 69 65 64 20  se is specified 
4f20: 61 73 20 70 61 72 74 20 6f 66 20 0a 74 68 65 20  as part of .the 
4f30: 73 74 61 74 65 6d 65 6e 74 20 63 61 75 73 69 6e  statement causin
4f40: 67 20 74 68 65 20 74 72 69 67 67 65 72 20 74 6f  g the trigger to
4f50: 20 66 69 72 65 2c 20 74 68 65 6e 20 74 68 69 73   fire, then this
4f60: 20 63 6f 6e 66 6c 69 63 74 20 68 61 6e 64 6c 69   conflict handli
4f70: 6e 67 0a 70 6f 6c 69 63 79 20 69 73 20 75 73 65  ng.policy is use
4f80: 64 20 69 6e 73 74 65 61 64 2e 3c 2f 70 3e 0a 0a  d instead.</p>..
4f90: 3c 70 3e 54 72 69 67 67 65 72 73 20 61 72 65 20  <p>Triggers are 
4fa0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 72  automatically dr
4fb0: 6f 70 70 65 64 20 77 68 65 6e 20 74 68 65 20 74  opped when the t
4fc0: 61 62 6c 65 20 74 68 61 74 20 74 68 65 79 20 61  able that they a
4fd0: 72 65 20 0a 61 73 73 6f 63 69 61 74 65 64 20 77  re .associated w
4fe0: 69 74 68 20 69 73 20 64 72 6f 70 70 65 64 2e 3c  ith is dropped.<
4ff0: 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67 65 72 73  /p>..<p>Triggers
5000: 20 6d 61 79 20 62 65 20 63 72 65 61 74 65 64 20   may be created 
5010: 6f 6e 20 76 69 65 77 73 2c 20 61 73 20 77 65 6c  on views, as wel
5020: 6c 20 61 73 20 6f 72 64 69 6e 61 72 79 20 74 61  l as ordinary ta
5030: 62 6c 65 73 2c 20 62 79 20 73 70 65 63 69 66 79  bles, by specify
5040: 69 6e 67 0a 49 4e 53 54 45 41 44 20 4f 46 20 69  ing.INSTEAD OF i
5050: 6e 20 74 68 65 20 43 52 45 41 54 45 20 54 52 49  n the CREATE TRI
5060: 47 47 45 52 20 73 74 61 74 65 6d 65 6e 74 2e 20  GGER statement. 
5070: 49 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 4f  If one or more O
5080: 4e 20 49 4e 53 45 52 54 2c 20 4f 4e 20 44 45 4c  N INSERT, ON DEL
5090: 45 54 45 0a 6f 72 20 4f 4e 20 55 50 44 41 54 45  ETE.or ON UPDATE
50a0: 20 74 72 69 67 67 65 72 73 20 61 72 65 20 64 65   triggers are de
50b0: 66 69 6e 65 64 20 6f 6e 20 61 20 76 69 65 77 2c  fined on a view,
50c0: 20 74 68 65 6e 20 69 74 20 69 73 20 6e 6f 74 20   then it is not 
50d0: 61 6e 20 65 72 72 6f 72 20 74 6f 20 65 78 65 63  an error to exec
50e0: 75 74 65 0a 61 6e 20 49 4e 53 45 52 54 2c 20 44  ute.an INSERT, D
50f0: 45 4c 45 54 45 20 6f 72 20 55 50 44 41 54 45 20  ELETE or UPDATE 
5100: 73 74 61 74 65 6d 65 6e 74 20 6f 6e 20 74 68 65  statement on the
5110: 20 76 69 65 77 2c 20 72 65 73 70 65 63 74 69 76   view, respectiv
5120: 65 6c 79 2e 20 54 68 65 72 65 61 66 74 65 72 2c  ely. Thereafter,
5130: 0a 65 78 65 63 75 74 69 6e 67 20 61 6e 20 49 4e  .executing an IN
5140: 53 45 52 54 2c 20 44 45 4c 45 54 45 20 6f 72 20  SERT, DELETE or 
5150: 55 50 44 41 54 45 20 6f 6e 20 74 68 65 20 76 69  UPDATE on the vi
5160: 65 77 20 63 61 75 73 65 73 20 74 68 65 20 61 73  ew causes the as
5170: 73 6f 63 69 61 74 65 64 0a 20 20 74 72 69 67 67  sociated.  trigg
5180: 65 72 73 20 74 6f 20 66 69 72 65 2e 20 54 68 65  ers to fire. The
5190: 20 72 65 61 6c 20 74 61 62 6c 65 73 20 75 6e 64   real tables und
51a0: 65 72 6c 79 69 6e 67 20 74 68 65 20 76 69 65 77  erlying the view
51b0: 20 61 72 65 20 6e 6f 74 20 6d 6f 64 69 66 69 65   are not modifie
51c0: 64 0a 20 20 28 65 78 63 65 70 74 20 70 6f 73 73  d.  (except poss
51d0: 69 62 6c 79 20 65 78 70 6c 69 63 69 74 6c 79 2c  ibly explicitly,
51e0: 20 62 79 20 61 20 74 72 69 67 67 65 72 20 70 72   by a trigger pr
51f0: 6f 67 72 61 6d 29 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ogram).</p>..<p>
5200: 3c 62 3e 45 78 61 6d 70 6c 65 3a 3c 2f 62 3e 3c  <b>Example:</b><
5210: 2f 70 3e 0a 0a 3c 70 3e 41 73 73 75 6d 69 6e 67  /p>..<p>Assuming
5220: 20 74 68 61 74 20 63 75 73 74 6f 6d 65 72 20 72   that customer r
5230: 65 63 6f 72 64 73 20 61 72 65 20 73 74 6f 72 65  ecords are store
5240: 64 20 69 6e 20 74 68 65 20 22 63 75 73 74 6f 6d  d in the "custom
5250: 65 72 73 22 20 74 61 62 6c 65 2c 20 61 6e 64 0a  ers" table, and.
5260: 74 68 61 74 20 6f 72 64 65 72 20 72 65 63 6f 72  that order recor
5270: 64 73 20 61 72 65 20 73 74 6f 72 65 64 20 69 6e  ds are stored in
5280: 20 74 68 65 20 22 6f 72 64 65 72 73 22 20 74 61   the "orders" ta
5290: 62 6c 65 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69  ble, the followi
52a0: 6e 67 20 74 72 69 67 67 65 72 0a 65 6e 73 75 72  ng trigger.ensur
52b0: 65 73 20 74 68 61 74 20 61 6c 6c 20 61 73 73 6f  es that all asso
52c0: 63 69 61 74 65 64 20 6f 72 64 65 72 73 20 61 72  ciated orders ar
52d0: 65 20 72 65 64 69 72 65 63 74 65 64 20 77 68 65  e redirected whe
52e0: 6e 20 61 20 63 75 73 74 6f 6d 65 72 20 63 68 61  n a customer cha
52f0: 6e 67 65 73 0a 68 69 73 20 6f 72 20 68 65 72 20  nges.his or her 
5300: 61 64 64 72 65 73 73 3a 3c 2f 70 3e 0a 7d 0a 45  address:</p>.}.E
5310: 78 61 6d 70 6c 65 20 7b 0a 43 52 45 41 54 45 20  xample {.CREATE 
5320: 54 52 49 47 47 45 52 20 75 70 64 61 74 65 5f 63  TRIGGER update_c
5330: 75 73 74 6f 6d 65 72 5f 61 64 64 72 65 73 73 20  ustomer_address 
5340: 55 50 44 41 54 45 20 4f 46 20 61 64 64 72 65 73  UPDATE OF addres
5350: 73 20 4f 4e 20 63 75 73 74 6f 6d 65 72 73 20 0a  s ON customers .
5360: 20 20 42 45 47 49 4e 0a 20 20 20 20 55 50 44 41    BEGIN.    UPDA
5370: 54 45 20 6f 72 64 65 72 73 20 53 45 54 20 61 64  TE orders SET ad
5380: 64 72 65 73 73 20 3d 20 6e 65 77 2e 61 64 64 72  dress = new.addr
5390: 65 73 73 20 57 48 45 52 45 20 63 75 73 74 6f 6d  ess WHERE custom
53a0: 65 72 5f 6e 61 6d 65 20 3d 20 6f 6c 64 2e 6e 61  er_name = old.na
53b0: 6d 65 3b 0a 20 20 45 4e 44 3b 0a 7d 0a 70 75 74  me;.  END;.}.put
53c0: 73 20 7b 0a 3c 70 3e 57 69 74 68 20 74 68 69 73  s {.<p>With this
53d0: 20 74 72 69 67 67 65 72 20 69 6e 73 74 61 6c 6c   trigger install
53e0: 65 64 2c 20 65 78 65 63 75 74 69 6e 67 20 74 68  ed, executing th
53f0: 65 20 73 74 61 74 65 6d 65 6e 74 3a 3c 2f 70 3e  e statement:</p>
5400: 0a 7d 0a 0a 45 78 61 6d 70 6c 65 20 7b 0a 55 50  .}..Example {.UP
5410: 44 41 54 45 20 63 75 73 74 6f 6d 65 72 73 20 53  DATE customers S
5420: 45 54 20 61 64 64 72 65 73 73 20 3d 20 27 31 20  ET address = '1 
5430: 4d 61 69 6e 20 53 74 2e 27 20 57 48 45 52 45 20  Main St.' WHERE 
5440: 6e 61 6d 65 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e  name = 'Jack Jon
5450: 65 73 27 3b 0a 7d 0a 70 75 74 73 20 7b 0a 3c 70  es';.}.puts {.<p
5460: 3e 63 61 75 73 65 73 20 74 68 65 20 66 6f 6c 6c  >causes the foll
5470: 6f 77 69 6e 67 20 74 6f 20 62 65 20 61 75 74 6f  owing to be auto
5480: 6d 61 74 69 63 61 6c 6c 79 20 65 78 65 63 75 74  matically execut
5490: 65 64 3a 3c 2f 70 3e 0a 7d 0a 45 78 61 6d 70 6c  ed:</p>.}.Exampl
54a0: 65 20 7b 0a 55 50 44 41 54 45 20 6f 72 64 65 72  e {.UPDATE order
54b0: 73 20 53 45 54 20 61 64 64 72 65 73 73 20 3d 20  s SET address = 
54c0: 27 31 20 4d 61 69 6e 20 53 74 2e 27 20 57 48 45  '1 Main St.' WHE
54d0: 52 45 20 63 75 73 74 6f 6d 65 72 5f 6e 61 6d 65  RE customer_name
54e0: 20 3d 20 27 4a 61 63 6b 20 4a 6f 6e 65 73 27 3b   = 'Jack Jones';
54f0: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 4e 6f  .}..puts {.<p>No
5500: 74 65 20 74 68 61 74 20 63 75 72 72 65 6e 74 6c  te that currentl
5510: 79 2c 20 74 72 69 67 67 65 72 73 20 6d 61 79 20  y, triggers may 
5520: 62 65 68 61 76 65 20 6f 64 64 6c 79 20 77 68 65  behave oddly whe
5530: 6e 20 63 72 65 61 74 65 64 20 6f 6e 20 74 61 62  n created on tab
5540: 6c 65 73 0a 20 20 77 69 74 68 20 49 4e 54 45 47  les.  with INTEG
5550: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 66  ER PRIMARY KEY f
5560: 69 65 6c 64 73 2e 20 49 66 20 61 20 42 45 46 4f  ields. If a BEFO
5570: 52 45 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  RE trigger progr
5580: 61 6d 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20  am modifies the 
5590: 0a 20 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41  .  INTEGER PRIMA
55a0: 52 59 20 4b 45 59 20 66 69 65 6c 64 20 6f 66 20  RY KEY field of 
55b0: 61 20 72 6f 77 20 74 68 61 74 20 77 69 6c 6c 20  a row that will 
55c0: 62 65 20 73 75 62 73 65 71 75 65 6e 74 6c 79 20  be subsequently 
55d0: 75 70 64 61 74 65 64 20 62 79 20 74 68 65 0a 20  updated by the. 
55e0: 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20   statement that 
55f0: 63 61 75 73 65 73 20 74 68 65 20 74 72 69 67 67  causes the trigg
5600: 65 72 20 74 6f 20 66 69 72 65 2c 20 74 68 65 6e  er to fire, then
5610: 20 74 68 65 20 75 70 64 61 74 65 20 6d 61 79 20   the update may 
5620: 6e 6f 74 20 6f 63 63 75 72 2e 20 0a 20 20 54 68  not occur. .  Th
5630: 65 20 77 6f 72 6b 61 72 6f 75 6e 64 20 69 73 20  e workaround is 
5640: 74 6f 20 64 65 63 6c 61 72 65 20 74 68 65 20 74  to declare the t
5650: 61 62 6c 65 20 77 69 74 68 20 61 20 50 52 49 4d  able with a PRIM
5660: 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 20 69  ARY KEY column i
5670: 6e 73 74 65 61 64 0a 20 20 6f 66 20 61 6e 20 49  nstead.  of an I
5680: 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b  NTEGER PRIMARY K
5690: 45 59 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e 0a 7d  EY column.</p>.}
56a0: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 41 20 73 70  ..puts {.<p>A sp
56b0: 65 63 69 61 6c 20 53 51 4c 20 66 75 6e 63 74 69  ecial SQL functi
56c0: 6f 6e 20 52 41 49 53 45 28 29 20 6d 61 79 20 62  on RAISE() may b
56d0: 65 20 75 73 65 64 20 77 69 74 68 69 6e 20 61 20  e used within a 
56e0: 74 72 69 67 67 65 72 2d 70 72 6f 67 72 61 6d 2c  trigger-program,
56f0: 20 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77   with the follow
5700: 69 6e 67 20 73 79 6e 74 61 78 3c 2f 70 3e 20 0a  ing syntax</p> .
5710: 7d 0a 53 79 6e 74 61 78 20 7b 72 61 69 73 65 2d  }.Syntax {raise-
5720: 66 75 6e 63 74 69 6f 6e 7d 20 7b 0a 52 41 49 53  function} {.RAIS
5730: 45 20 28 20 41 42 4f 52 54 2c 20 3c 65 72 72 6f  E ( ABORT, <erro
5740: 72 2d 6d 65 73 73 61 67 65 3e 20 29 20 7c 20 0a  r-message> ) | .
5750: 52 41 49 53 45 20 28 20 46 41 49 4c 2c 20 3c 65  RAISE ( FAIL, <e
5760: 72 72 6f 72 2d 6d 65 73 73 61 67 65 3e 20 29 20  rror-message> ) 
5770: 7c 20 0a 52 41 49 53 45 20 28 20 52 4f 4c 4c 42  | .RAISE ( ROLLB
5780: 41 43 4b 2c 20 3c 65 72 72 6f 72 2d 6d 65 73 73  ACK, <error-mess
5790: 61 67 65 3e 20 29 20 7c 20 0a 52 41 49 53 45 20  age> ) | .RAISE 
57a0: 28 20 49 47 4e 4f 52 45 20 29 0a 7d 0a 70 75 74  ( IGNORE ).}.put
57b0: 73 20 7b 0a 3c 70 3e 57 68 65 6e 20 6f 6e 65 20  s {.<p>When one 
57c0: 6f 66 20 74 68 65 20 66 69 72 73 74 20 74 68 72  of the first thr
57d0: 65 65 20 66 6f 72 6d 73 20 69 73 20 63 61 6c 6c  ee forms is call
57e0: 65 64 20 64 75 72 69 6e 67 20 74 72 69 67 67 65  ed during trigge
57f0: 72 2d 70 72 6f 67 72 61 6d 20 65 78 65 63 75 74  r-program execut
5800: 69 6f 6e 2c 20 74 68 65 20 73 70 65 63 69 66 69  ion, the specifi
5810: 65 64 20 4f 4e 20 43 4f 4e 46 4c 49 43 54 20 70  ed ON CONFLICT p
5820: 72 6f 63 65 73 73 69 6e 67 20 69 73 20 70 65 72  rocessing is per
5830: 66 6f 72 6d 65 64 20 28 65 69 74 68 65 72 20 41  formed (either A
5840: 42 4f 52 54 2c 20 46 41 49 4c 20 6f 72 20 0a 20  BORT, FAIL or . 
5850: 52 4f 4c 4c 42 41 43 4b 29 20 61 6e 64 20 74 68  ROLLBACK) and th
5860: 65 20 63 75 72 72 65 6e 74 20 71 75 65 72 79 20  e current query 
5870: 74 65 72 6d 69 6e 61 74 65 73 2e 20 41 6e 20 65  terminates. An e
5880: 72 72 6f 72 20 63 6f 64 65 20 6f 66 20 53 51 4c  rror code of SQL
5890: 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e 54 20 69  ITE_CONSTRAINT i
58a0: 73 20 72 65 74 75 72 6e 65 64 20 74 6f 20 74 68  s returned to th
58b0: 65 20 75 73 65 72 2c 20 61 6c 6f 6e 67 20 77 69  e user, along wi
58c0: 74 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64  th the specified
58d0: 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 2e 3c   error message.<
58e0: 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 52 41 49  /p>..<p>When RAI
58f0: 53 45 28 49 47 4e 4f 52 45 29 20 69 73 20 63 61  SE(IGNORE) is ca
5900: 6c 6c 65 64 2c 20 74 68 65 20 72 65 6d 61 69 6e  lled, the remain
5910: 64 65 72 20 6f 66 20 74 68 65 20 63 75 72 72 65  der of the curre
5920: 6e 74 20 74 72 69 67 67 65 72 20 70 72 6f 67 72  nt trigger progr
5930: 61 6d 2c 0a 74 68 65 20 73 74 61 74 65 6d 65 6e  am,.the statemen
5940: 74 20 74 68 61 74 20 63 61 75 73 65 64 20 74 68  t that caused th
5950: 65 20 74 72 69 67 67 65 72 20 70 72 6f 67 72 61  e trigger progra
5960: 6d 20 74 6f 20 65 78 65 63 75 74 65 20 61 6e 64  m to execute and
5970: 20 61 6e 79 20 73 75 62 73 65 71 75 65 6e 74 0a   any subsequent.
5980: 20 20 20 20 74 72 69 67 67 65 72 20 70 72 6f 67      trigger prog
5990: 72 61 6d 73 20 74 68 61 74 20 77 6f 75 6c 64 20  rams that would 
59a0: 6f 66 20 62 65 65 6e 20 65 78 65 63 75 74 65 64  of been executed
59b0: 20 61 72 65 20 61 62 61 6e 64 6f 6e 65 64 2e 20   are abandoned. 
59c0: 4e 6f 20 64 61 74 61 62 61 73 65 0a 20 20 20 20  No database.    
59d0: 63 68 61 6e 67 65 73 20 61 72 65 20 72 6f 6c 6c  changes are roll
59e0: 65 64 20 62 61 63 6b 2e 20 20 49 66 20 74 68 65  ed back.  If the
59f0: 20 73 74 61 74 65 6d 65 6e 74 20 74 68 61 74 20   statement that 
5a00: 63 61 75 73 65 64 20 74 68 65 20 74 72 69 67 67  caused the trigg
5a10: 65 72 20 70 72 6f 67 72 61 6d 0a 20 20 20 20 74  er program.    t
5a20: 6f 20 65 78 65 63 75 74 65 20 69 73 20 69 74 73  o execute is its
5a30: 65 6c 66 20 70 61 72 74 20 6f 66 20 61 20 74 72  elf part of a tr
5a40: 69 67 67 65 72 20 70 72 6f 67 72 61 6d 2c 20 74  igger program, t
5a50: 68 65 6e 20 74 68 61 74 20 74 72 69 67 67 65 72  hen that trigger
5a60: 20 70 72 6f 67 72 61 6d 0a 20 20 20 20 72 65 73   program.    res
5a70: 75 6d 65 73 20 65 78 65 63 75 74 69 6f 6e 20 61  umes execution a
5a80: 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20  t the beginning 
5a90: 6f 66 20 74 68 65 20 6e 65 78 74 20 73 74 65 70  of the next step
5aa0: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 72 69 67 67  ..</p>..<p>Trigg
5ab0: 65 72 73 20 61 72 65 20 72 65 6d 6f 76 65 64 20  ers are removed 
5ac0: 75 73 69 6e 67 20 74 68 65 20 3c 61 20 68 72 65  using the <a hre
5ad0: 66 3d 22 23 64 72 6f 70 74 72 69 67 67 65 72 22  f="#droptrigger"
5ae0: 3e 44 52 4f 50 20 54 52 49 47 47 45 52 3c 2f 61  >DROP TRIGGER</a
5af0: 3e 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 4e 6f  >.statement.  No
5b00: 6e 2d 74 65 6d 70 6f 72 61 72 79 20 74 72 69 67  n-temporary trig
5b10: 67 65 72 73 20 63 61 6e 6e 6f 74 20 62 65 20 61  gers cannot be a
5b20: 64 64 65 64 20 6f 6e 20 61 20 74 61 62 6c 65 20  dded on a table 
5b30: 69 6e 20 61 6e 20 0a 61 74 74 61 63 68 65 64 20  in an .attached 
5b40: 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 7d 0a  database.</p>.}.
5b50: 0a 0a 53 65 63 74 69 6f 6e 20 7b 43 52 45 41 54  ..Section {CREAT
5b60: 45 20 56 49 45 57 7d 20 7b 63 72 65 61 74 65 76  E VIEW} {createv
5b70: 69 65 77 7d 0a 0a 53 79 6e 74 61 78 20 7b 73 71  iew}..Syntax {sq
5b80: 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 43 52 45  l-command} {.CRE
5b90: 41 54 45 20 5b 54 45 4d 50 20 7c 20 54 45 4d 50  ATE [TEMP | TEMP
5ba0: 4f 52 41 52 59 5d 20 56 49 45 57 20 3c 76 69 65  ORARY] VIEW <vie
5bb0: 77 2d 6e 61 6d 65 3e 20 41 53 20 3c 73 65 6c 65  w-name> AS <sele
5bc0: 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a  ct-statement>.}.
5bd0: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 43  .puts {.<p>The C
5be0: 52 45 41 54 45 20 56 49 45 57 20 63 6f 6d 6d 61  REATE VIEW comma
5bf0: 6e 64 20 61 73 73 69 67 6e 73 20 61 20 6e 61 6d  nd assigns a nam
5c00: 65 20 74 6f 20 61 20 70 72 65 2d 70 61 63 6b 61  e to a pre-packa
5c10: 67 65 64 20 0a 3c 61 20 68 72 65 66 3d 22 23 73  ged .<a href="#s
5c20: 65 6c 65 63 74 22 3e 53 45 4c 45 43 54 3c 2f 61  elect">SELECT</a
5c30: 3e 0a 73 74 61 74 65 6d 65 6e 74 2e 20 20 4f 6e  >.statement.  On
5c40: 63 65 20 74 68 65 20 76 69 65 77 20 69 73 20 63  ce the view is c
5c50: 72 65 61 74 65 64 2c 20 69 74 20 63 61 6e 20 62  reated, it can b
5c60: 65 20 75 73 65 64 20 69 6e 20 74 68 65 20 46 52  e used in the FR
5c70: 4f 4d 20 63 6c 61 75 73 65 0a 6f 66 20 61 6e 6f  OM clause.of ano
5c80: 74 68 65 72 20 53 45 4c 45 43 54 20 69 6e 20 70  ther SELECT in p
5c90: 6c 61 63 65 20 6f 66 20 61 20 74 61 62 6c 65 20  lace of a table 
5ca0: 6e 61 6d 65 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 59  name..</p>..<p>Y
5cb0: 6f 75 20 63 61 6e 6e 6f 74 20 43 4f 50 59 2c 20  ou cannot COPY, 
5cc0: 44 45 4c 45 54 45 2c 20 49 4e 53 45 52 54 20 6f  DELETE, INSERT o
5cd0: 72 20 55 50 44 41 54 45 20 61 20 76 69 65 77 2e  r UPDATE a view.
5ce0: 20 20 56 69 65 77 73 20 61 72 65 20 72 65 61 64    Views are read
5cf0: 2d 6f 6e 6c 79 20 0a 69 6e 20 53 51 4c 69 74 65  -only .in SQLite
5d00: 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 6e 20 6d  .  However, in m
5d10: 61 6e 79 20 63 61 73 65 73 20 79 6f 75 20 63 61  any cases you ca
5d20: 6e 20 75 73 65 20 61 20 3c 61 20 68 72 65 66 3d  n use a <a href=
5d30: 22 23 74 72 69 67 67 65 72 22 3e 0a 54 52 49 47  "#trigger">.TRIG
5d40: 47 45 52 3c 2f 61 3e 20 6f 6e 20 74 68 65 20 76  GER</a> on the v
5d50: 69 65 77 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73  iew to accomplis
5d60: 68 20 74 68 65 20 73 61 6d 65 20 74 68 69 6e 67  h the same thing
5d70: 2e 20 20 56 69 65 77 73 20 61 72 65 20 72 65 6d  .  Views are rem
5d80: 6f 76 65 64 20 0a 77 69 74 68 20 74 68 65 20 3c  oved .with the <
5d90: 61 20 68 72 65 66 3d 22 23 64 72 6f 70 76 69 65  a href="#dropvie
5da0: 77 22 3e 44 52 4f 50 20 56 49 45 57 3c 2f 61 3e  w">DROP VIEW</a>
5db0: 20 0a 63 6f 6d 6d 61 6e 64 2e 20 20 4e 6f 6e 2d   .command.  Non-
5dc0: 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77 73 20  temporary views 
5dd0: 63 61 6e 6e 6f 74 20 62 65 20 63 72 65 61 74 65  cannot be create
5de0: 64 20 6f 6e 20 74 61 62 6c 65 73 20 69 6e 20 61  d on tables in a
5df0: 6e 20 61 74 74 61 63 68 65 64 20 0a 64 61 74 61  n attached .data
5e00: 62 61 73 65 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  base.</p>.}...Se
5e10: 63 74 69 6f 6e 20 44 45 4c 45 54 45 20 64 65 6c  ction DELETE del
5e20: 65 74 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c  ete..Syntax {sql
5e30: 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44 45  -statement} {.DE
5e40: 4c 45 54 45 20 46 52 4f 4d 20 5b 3c 64 61 74 61  LETE FROM [<data
5e50: 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74  base-name> .] <t
5e60: 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 57 48 45 52  able-name> [WHER
5e70: 45 20 3c 65 78 70 72 3e 5d 0a 7d 0a 0a 70 75 74  E <expr>].}..put
5e80: 73 20 7b 0a 3c 70 3e 54 68 65 20 44 45 4c 45 54  s {.<p>The DELET
5e90: 45 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65  E command is use
5ea0: 64 20 74 6f 20 72 65 6d 6f 76 65 20 72 65 63 6f  d to remove reco
5eb0: 72 64 73 20 66 72 6f 6d 20 61 20 74 61 62 6c 65  rds from a table
5ec0: 2e 0a 54 68 65 20 63 6f 6d 6d 61 6e 64 20 63 6f  ..The command co
5ed0: 6e 73 69 73 74 73 20 6f 66 20 74 68 65 20 22 44  nsists of the "D
5ee0: 45 4c 45 54 45 20 46 52 4f 4d 22 20 6b 65 79 77  ELETE FROM" keyw
5ef0: 6f 72 64 73 20 66 6f 6c 6c 6f 77 65 64 20 62 79  ords followed by
5f00: 0a 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65  .the name of the
5f10: 20 74 61 62 6c 65 20 66 72 6f 6d 20 77 68 69 63   table from whic
5f20: 68 20 72 65 63 6f 72 64 73 20 61 72 65 20 74 6f  h records are to
5f30: 20 62 65 20 72 65 6d 6f 76 65 64 2e 0a 3c 2f 70   be removed..</p
5f40: 3e 0a 0a 3c 70 3e 57 69 74 68 6f 75 74 20 61 20  >..<p>Without a 
5f50: 57 48 45 52 45 20 63 6c 61 75 73 65 2c 20 61 6c  WHERE clause, al
5f60: 6c 20 72 6f 77 73 20 6f 66 20 74 68 65 20 74 61  l rows of the ta
5f70: 62 6c 65 20 61 72 65 20 72 65 6d 6f 76 65 64 2e  ble are removed.
5f80: 0a 49 66 20 61 20 57 48 45 52 45 20 63 6c 61 75  .If a WHERE clau
5f90: 73 65 20 69 73 20 73 75 70 70 6c 69 65 64 2c 20  se is supplied, 
5fa0: 74 68 65 6e 20 6f 6e 6c 79 20 74 68 6f 73 65 20  then only those 
5fb0: 72 6f 77 73 20 74 68 61 74 20 6d 61 74 63 68 0a  rows that match.
5fc0: 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 61  the expression a
5fd0: 72 65 20 72 65 6d 6f 76 65 64 2e 3c 2f 70 3e 0a  re removed.</p>.
5fe0: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 45 54  }...Section {DET
5ff0: 41 43 48 20 44 41 54 41 42 41 53 45 7d 20 64 65  ACH DATABASE} de
6000: 74 61 63 68 0a 0a 53 79 6e 74 61 78 20 7b 73 71  tach..Syntax {sq
6010: 6c 2d 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 45 54  l-command} {.DET
6020: 41 43 48 20 5b 44 41 54 41 42 41 53 45 5d 20 3c  ACH [DATABASE] <
6030: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 0a 7d  database-name>.}
6040: 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 69 73  ..puts {.<p>This
6050: 20 73 74 61 74 65 6d 65 6e 74 20 64 65 74 61 63   statement detac
6060: 68 65 73 20 61 6e 20 61 64 64 69 74 69 6f 6e 61  hes an additiona
6070: 6c 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  l database conne
6080: 63 74 69 6f 6e 20 70 72 65 76 69 6f 75 73 6c 79  ction previously
6090: 20 0a 61 74 74 61 63 68 65 64 20 75 73 69 6e 67   .attached using
60a0: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 61   the <a href="#a
60b0: 74 74 61 63 68 22 3e 41 54 54 41 43 48 20 44 41  ttach">ATTACH DA
60c0: 54 41 42 41 53 45 3c 2f 61 3e 20 73 74 61 74 65  TABASE</a> state
60d0: 6d 65 6e 74 2e 20 20 49 74 0a 69 73 20 70 6f 73  ment.  It.is pos
60e0: 73 69 62 6c 65 20 74 6f 20 68 61 76 65 20 74 68  sible to have th
60f0: 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20  e same database 
6100: 66 69 6c 65 20 61 74 74 61 63 68 65 64 20 6d 75  file attached mu
6110: 6c 74 69 70 6c 65 20 74 69 6d 65 73 20 75 73 69  ltiple times usi
6120: 6e 67 20 0a 64 69 66 66 65 72 65 6e 74 20 6e 61  ng .different na
6130: 6d 65 73 2c 20 61 6e 64 20 64 65 74 61 63 68 69  mes, and detachi
6140: 6e 67 20 6f 6e 65 20 63 6f 6e 6e 65 63 74 69 6f  ng one connectio
6150: 6e 20 74 6f 20 61 20 66 69 6c 65 20 77 69 6c 6c  n to a file will
6160: 20 6c 65 61 76 65 20 74 68 65 20 0a 6f 74 68 65   leave the .othe
6170: 72 73 20 69 6e 74 61 63 74 2e 3c 2f 70 3e 0a 0a  rs intact.</p>..
6180: 3c 70 3e 54 68 69 73 20 73 74 61 74 65 6d 65 6e  <p>This statemen
6190: 74 20 77 69 6c 6c 20 66 61 69 6c 20 69 66 20 53  t will fail if S
61a0: 51 4c 69 74 65 20 69 73 20 69 6e 20 74 68 65 20  QLite is in the 
61b0: 6d 69 64 64 6c 65 20 6f 66 20 61 20 74 72 61 6e  middle of a tran
61c0: 73 61 63 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d 0a 0a  saction.</p>.}..
61d0: 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50 20 49  .Section {DROP I
61e0: 4e 44 45 58 7d 20 64 72 6f 70 69 6e 64 65 78 0a  NDEX} dropindex.
61f0: 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d 63 6f 6d  .Syntax {sql-com
6200: 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20 49 4e 44  mand} {.DROP IND
6210: 45 58 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61  EX [<database-na
6220: 6d 65 3e 20 2e 5d 20 3c 69 6e 64 65 78 2d 6e 61  me> .] <index-na
6230: 6d 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70  me>.}..puts {.<p
6240: 3e 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20  >The DROP INDEX 
6250: 73 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65  statement remove
6260: 73 20 61 6e 20 69 6e 64 65 78 20 61 64 64 65 64  s an index added
6270: 20 77 69 74 68 20 74 68 65 20 3c 61 20 68 72 65   with the <a hre
6280: 66 3d 22 23 63 72 65 61 74 65 69 6e 64 65 78 22  f="#createindex"
6290: 3e 0a 43 52 45 41 54 45 20 49 4e 44 45 58 3c 2f  >.CREATE INDEX</
62a0: 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  a> statement.  T
62b0: 68 65 20 69 6e 64 65 78 20 6e 61 6d 65 64 20 69  he index named i
62c0: 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 72 65 6d  s completely rem
62d0: 6f 76 65 64 20 66 72 6f 6d 0a 74 68 65 20 64 69  oved from.the di
62e0: 73 6b 2e 20 20 54 68 65 20 6f 6e 6c 79 20 77 61  sk.  The only wa
62f0: 79 20 74 6f 20 72 65 63 6f 76 65 72 20 74 68 65  y to recover the
6300: 20 69 6e 64 65 78 20 69 73 20 74 6f 20 72 65 65   index is to ree
6310: 6e 74 65 72 20 74 68 65 0a 61 70 70 72 6f 70 72  nter the.appropr
6320: 69 61 74 65 20 43 52 45 41 54 45 20 49 4e 44 45  iate CREATE INDE
6330: 58 20 63 6f 6d 6d 61 6e 64 2e 20 20 4e 6f 6e 2d  X command.  Non-
6340: 74 65 6d 70 6f 72 61 72 79 20 69 6e 64 65 78 65  temporary indexe
6350: 73 20 6f 6e 20 74 61 62 6c 65 73 20 69 6e 20 0a  s on tables in .
6360: 61 6e 20 61 74 74 61 63 68 65 64 20 64 61 74 61  an attached data
6370: 62 61 73 65 20 63 61 6e 6e 6f 74 20 62 65 20 64  base cannot be d
6380: 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e  ropped.</p>..<p>
6390: 54 68 65 20 44 52 4f 50 20 49 4e 44 45 58 20 73  The DROP INDEX s
63a0: 74 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f  tatement does no
63b0: 74 20 72 65 64 75 63 65 20 74 68 65 20 73 69 7a  t reduce the siz
63c0: 65 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73  e of the databas
63d0: 65 20 0a 66 69 6c 65 2e 20 20 45 6d 70 74 79 20  e .file.  Empty 
63e0: 73 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74  space in the dat
63f0: 61 62 61 73 65 20 69 73 20 72 65 74 61 69 6e 65  abase is retaine
6400: 64 20 66 6f 72 20 6c 61 74 65 72 20 49 4e 53 45  d for later INSE
6410: 52 54 73 2e 20 20 54 6f 20 0a 72 65 6d 6f 76 65  RTs.  To .remove
6420: 20 66 72 65 65 20 73 70 61 63 65 20 69 6e 20 74   free space in t
6430: 68 65 20 64 61 74 61 62 61 73 65 2c 20 75 73 65  he database, use
6440: 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 76   the <a href="#v
6450: 61 63 75 75 6d 22 3e 56 41 43 55 55 4d 3c 2f 61  acuum">VACUUM</a
6460: 3e 20 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a  > .command.</p>.
6470: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f  }...Section {DRO
6480: 50 20 54 41 42 4c 45 7d 20 64 72 6f 70 74 61 62  P TABLE} droptab
6490: 6c 65 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  le..Syntax {sql-
64a0: 63 6f 6d 6d 61 6e 64 7d 20 7b 0a 44 52 4f 50 20  command} {.DROP 
64b0: 54 41 42 4c 45 20 3c 74 61 62 6c 65 2d 6e 61 6d  TABLE <table-nam
64c0: 65 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e  e>.}..puts {.<p>
64d0: 54 68 65 20 44 52 4f 50 20 54 41 42 4c 45 20 73  The DROP TABLE s
64e0: 74 61 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73  tatement removes
64f0: 20 61 20 74 61 62 6c 65 20 61 64 64 65 64 20 77   a table added w
6500: 69 74 68 20 74 68 65 20 3c 61 20 68 72 65 66 3d  ith the <a href=
6510: 0a 22 23 63 72 65 61 74 65 74 61 62 6c 65 22 3e  ."#createtable">
6520: 43 52 45 41 54 45 20 54 41 42 4c 45 3c 2f 61 3e  CREATE TABLE</a>
6530: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65   statement.  The
6540: 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65 64 20   name specified 
6550: 69 73 20 74 68 65 0a 74 61 62 6c 65 20 6e 61 6d  is the.table nam
6560: 65 2e 20 20 49 74 20 69 73 20 63 6f 6d 70 6c 65  e.  It is comple
6570: 74 65 6c 79 20 72 65 6d 6f 76 65 64 20 66 72 6f  tely removed fro
6580: 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20 73  m the database s
6590: 63 68 65 6d 61 20 61 6e 64 20 74 68 65 20 0a 64  chema and the .d
65a0: 69 73 6b 20 66 69 6c 65 2e 20 20 54 68 65 20 74  isk file.  The t
65b0: 61 62 6c 65 20 63 61 6e 20 6e 6f 74 20 62 65 20  able can not be 
65c0: 72 65 63 6f 76 65 72 65 64 2e 20 20 41 6c 6c 20  recovered.  All 
65d0: 69 6e 64 69 63 65 73 20 61 73 73 6f 63 69 61 74  indices associat
65e0: 65 64 20 0a 77 69 74 68 20 74 68 65 20 74 61 62  ed .with the tab
65f0: 6c 65 20 61 72 65 20 61 6c 73 6f 20 64 65 6c 65  le are also dele
6600: 74 65 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70 6f 72  ted.  Non-tempor
6610: 61 72 79 20 74 61 62 6c 65 73 20 69 6e 20 61 6e  ary tables in an
6620: 20 61 74 74 61 63 68 65 64 20 0a 64 61 74 61 62   attached .datab
6630: 61 73 65 20 63 61 6e 6e 6f 74 20 62 65 20 64 72  ase cannot be dr
6640: 6f 70 70 65 64 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54  opped.</p>..<p>T
6650: 68 65 20 44 52 4f 50 20 54 41 42 4c 45 20 73 74  he DROP TABLE st
6660: 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74  atement does not
6670: 20 72 65 64 75 63 65 20 74 68 65 20 73 69 7a 65   reduce the size
6680: 20 6f 66 20 74 68 65 20 64 61 74 61 62 61 73 65   of the database
6690: 20 0a 66 69 6c 65 2e 20 20 45 6d 70 74 79 20 73   .file.  Empty s
66a0: 70 61 63 65 20 69 6e 20 74 68 65 20 64 61 74 61  pace in the data
66b0: 62 61 73 65 20 69 73 20 72 65 74 61 69 6e 65 64  base is retained
66c0: 20 66 6f 72 20 6c 61 74 65 72 20 49 4e 53 45 52   for later INSER
66d0: 54 73 2e 20 20 54 6f 20 0a 72 65 6d 6f 76 65 20  Ts.  To .remove 
66e0: 66 72 65 65 20 73 70 61 63 65 20 69 6e 20 74 68  free space in th
66f0: 65 20 64 61 74 61 62 61 73 65 2c 20 75 73 65 20  e database, use 
6700: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23 76 61  the <a href="#va
6710: 63 75 75 6d 22 3e 56 41 43 55 55 4d 3c 2f 61 3e  cuum">VACUUM</a>
6720: 20 0a 63 6f 6d 6d 61 6e 64 2e 3c 2f 70 3e 0a 7d   .command.</p>.}
6730: 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 44 52 4f 50  ...Section {DROP
6740: 20 54 52 49 47 47 45 52 7d 20 64 72 6f 70 74 72   TRIGGER} droptr
6750: 69 67 67 65 72 0a 53 79 6e 74 61 78 20 7b 73 71  igger.Syntax {sq
6760: 6c 2d 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 44  l-statement} {.D
6770: 52 4f 50 20 54 52 49 47 47 45 52 20 5b 3c 64 61  ROP TRIGGER [<da
6780: 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20  tabase-name> .] 
6790: 3c 74 72 69 67 67 65 72 2d 6e 61 6d 65 3e 0a 7d  <trigger-name>.}
67a0: 0a 70 75 74 73 20 7b 20 0a 3c 70 3e 54 68 65 20  .puts { .<p>The 
67b0: 44 52 4f 50 20 54 52 49 47 47 45 52 20 73 74 61  DROP TRIGGER sta
67c0: 74 65 6d 65 6e 74 20 72 65 6d 6f 76 65 73 20 61  tement removes a
67d0: 20 74 72 69 67 67 65 72 20 63 72 65 61 74 65 64   trigger created
67e0: 20 62 79 20 74 68 65 20 0a 3c 61 20 68 72 65 66   by the .<a href
67f0: 3d 22 23 63 72 65 61 74 65 74 72 69 67 67 65 72  ="#createtrigger
6800: 22 3e 43 52 45 41 54 45 20 54 52 49 47 47 45 52  ">CREATE TRIGGER
6810: 3c 2f 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20  </a> statement. 
6820: 20 54 68 65 20 74 72 69 67 67 65 72 20 69 73 20   The trigger is 
6830: 0a 64 65 6c 65 74 65 64 20 66 72 6f 6d 20 74 68  .deleted from th
6840: 65 20 64 61 74 61 62 61 73 65 20 73 63 68 65 6d  e database schem
6850: 61 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 72 69  a. Note that tri
6860: 67 67 65 72 73 20 61 72 65 20 61 75 74 6f 6d 61  ggers are automa
6870: 74 69 63 61 6c 6c 79 20 0a 64 72 6f 70 70 65 64  tically .dropped
6880: 20 77 68 65 6e 20 74 68 65 20 61 73 73 6f 63 69   when the associ
6890: 61 74 65 64 20 74 61 62 6c 65 20 69 73 20 64 72  ated table is dr
68a0: 6f 70 70 65 64 2e 20 20 4e 6f 6e 2d 74 65 6d 70  opped.  Non-temp
68b0: 6f 72 61 72 79 20 74 72 69 67 67 65 72 73 20 0a  orary triggers .
68c0: 63 61 6e 6e 6f 74 20 62 65 20 64 72 6f 70 70 65  cannot be droppe
68d0: 64 20 6f 6e 20 61 74 74 61 63 68 65 64 20 74 61  d on attached ta
68e0: 62 6c 65 73 2e 3c 2f 70 3e 0a 7d 0a 0a 0a 53 65  bles.</p>.}...Se
68f0: 63 74 69 6f 6e 20 7b 44 52 4f 50 20 56 49 45 57  ction {DROP VIEW
6900: 7d 20 64 72 6f 70 76 69 65 77 0a 0a 53 79 6e 74  } dropview..Synt
6910: 61 78 20 7b 73 71 6c 2d 63 6f 6d 6d 61 6e 64 7d  ax {sql-command}
6920: 20 7b 0a 44 52 4f 50 20 56 49 45 57 20 3c 76 69   {.DROP VIEW <vi
6930: 65 77 2d 6e 61 6d 65 3e 0a 7d 0a 0a 70 75 74 73  ew-name>.}..puts
6940: 20 7b 0a 3c 70 3e 54 68 65 20 44 52 4f 50 20 56   {.<p>The DROP V
6950: 49 45 57 20 73 74 61 74 65 6d 65 6e 74 20 72 65  IEW statement re
6960: 6d 6f 76 65 73 20 61 20 76 69 65 77 20 63 72 65  moves a view cre
6970: 61 74 65 64 20 62 79 20 74 68 65 20 3c 61 20 68  ated by the <a h
6980: 72 65 66 3d 0a 22 23 63 72 65 61 74 65 76 69 65  ref=."#createvie
6990: 77 22 3e 43 52 45 41 54 45 20 56 49 45 57 3c 2f  w">CREATE VIEW</
69a0: 61 3e 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54  a> statement.  T
69b0: 68 65 20 6e 61 6d 65 20 73 70 65 63 69 66 69 65  he name specifie
69c0: 64 20 69 73 20 74 68 65 20 0a 76 69 65 77 20 6e  d is the .view n
69d0: 61 6d 65 2e 20 20 49 74 20 69 73 20 72 65 6d 6f  ame.  It is remo
69e0: 76 65 64 20 66 72 6f 6d 20 74 68 65 20 64 61 74  ved from the dat
69f0: 61 62 61 73 65 20 73 63 68 65 6d 61 2c 20 62 75  abase schema, bu
6a00: 74 20 6e 6f 20 61 63 74 75 61 6c 20 64 61 74 61  t no actual data
6a10: 20 0a 69 6e 20 74 68 65 20 75 6e 64 65 72 6c 79   .in the underly
6a20: 69 6e 67 20 62 61 73 65 20 74 61 62 6c 65 73 20  ing base tables 
6a30: 69 73 20 6d 6f 64 69 66 69 65 64 2e 20 20 4e 6f  is modified.  No
6a40: 6e 2d 74 65 6d 70 6f 72 61 72 79 20 76 69 65 77  n-temporary view
6a50: 73 20 69 6e 20 0a 61 74 74 61 63 68 65 64 20 64  s in .attached d
6a60: 61 74 61 62 61 73 65 73 20 63 61 6e 6e 6f 74 20  atabases cannot 
6a70: 62 65 20 64 72 6f 70 70 65 64 2e 3c 2f 70 3e 0a  be dropped.</p>.
6a80: 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 45 58 50 4c  }...Section EXPL
6a90: 41 49 4e 20 65 78 70 6c 61 69 6e 0a 0a 53 79 6e  AIN explain..Syn
6aa0: 74 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65  tax {sql-stateme
6ab0: 6e 74 7d 20 7b 0a 45 58 50 4c 41 49 4e 20 3c 73  nt} {.EXPLAIN <s
6ac0: 71 6c 2d 73 74 61 74 65 6d 65 6e 74 3e 0a 7d 0a  ql-statement>.}.
6ad0: 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 45  .puts {.<p>The E
6ae0: 58 50 4c 41 49 4e 20 63 6f 6d 6d 61 6e 64 20 6d  XPLAIN command m
6af0: 6f 64 69 66 69 65 72 20 69 73 20 61 20 6e 6f 6e  odifier is a non
6b00: 2d 73 74 61 6e 64 61 72 64 20 65 78 74 65 6e 73  -standard extens
6b10: 69 6f 6e 2e 20 20 54 68 65 0a 69 64 65 61 20 63  ion.  The.idea c
6b20: 6f 6d 65 73 20 66 72 6f 6d 20 61 20 73 69 6d 69  omes from a simi
6b30: 6c 61 72 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e  lar command foun
6b40: 64 20 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2c  d in PostgreSQL,
6b50: 20 62 75 74 20 74 68 65 20 6f 70 65 72 61 74 69   but the operati
6b60: 6f 6e 0a 69 73 20 63 6f 6d 70 6c 65 74 65 6c 79  on.is completely
6b70: 20 64 69 66 66 65 72 65 6e 74 2e 3c 2f 70 3e 0a   different.</p>.
6b80: 0a 3c 70 3e 49 66 20 74 68 65 20 45 58 50 4c 41  .<p>If the EXPLA
6b90: 49 4e 20 6b 65 79 77 6f 72 64 20 61 70 70 65 61  IN keyword appea
6ba0: 72 73 20 62 65 66 6f 72 65 20 61 6e 79 20 6f 74  rs before any ot
6bb0: 68 65 72 20 53 51 4c 69 74 65 20 53 51 4c 20 63  her SQLite SQL c
6bc0: 6f 6d 6d 61 6e 64 0a 74 68 65 6e 20 69 6e 73 74  ommand.then inst
6bd0: 65 61 64 20 6f 66 20 61 63 74 75 61 6c 6c 79 20  ead of actually 
6be0: 65 78 65 63 75 74 69 6e 67 20 74 68 65 20 63 6f  executing the co
6bf0: 6d 6d 61 6e 64 2c 20 74 68 65 20 53 51 4c 69 74  mmand, the SQLit
6c00: 65 20 6c 69 62 72 61 72 79 20 77 69 6c 6c 0a 72  e library will.r
6c10: 65 70 6f 72 74 20 62 61 63 6b 20 74 68 65 20 73  eport back the s
6c20: 65 71 75 65 6e 63 65 20 6f 66 20 76 69 72 74 75  equence of virtu
6c30: 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73 74 72  al machine instr
6c40: 75 63 74 69 6f 6e 73 20 69 74 20 77 6f 75 6c 64  uctions it would
6c50: 20 68 61 76 65 0a 75 73 65 64 20 74 6f 20 65 78   have.used to ex
6c60: 65 63 75 74 65 20 74 68 65 20 63 6f 6d 6d 61 6e  ecute the comman
6c70: 64 20 68 61 64 20 74 68 65 20 45 58 50 4c 41 49  d had the EXPLAI
6c80: 4e 20 6b 65 79 77 6f 72 64 20 6e 6f 74 20 62 65  N keyword not be
6c90: 65 6e 20 70 72 65 73 65 6e 74 2e 0a 46 6f 72 20  en present..For 
6ca0: 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72  additional infor
6cb0: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 76 69 72  mation about vir
6cc0: 74 75 61 6c 20 6d 61 63 68 69 6e 65 20 69 6e 73  tual machine ins
6cd0: 74 72 75 63 74 69 6f 6e 73 20 73 65 65 0a 74 68  tructions see.th
6ce0: 65 20 3c 61 20 68 72 65 66 3d 22 61 72 63 68 2e  e <a href="arch.
6cf0: 68 74 6d 6c 22 3e 61 72 63 68 69 74 65 63 74 75  html">architectu
6d00: 72 65 20 64 65 73 63 72 69 70 74 69 6f 6e 3c 2f  re description</
6d10: 61 3e 20 6f 72 20 74 68 65 20 64 6f 63 75 6d 65  a> or the docume
6d20: 6e 74 61 74 69 6f 6e 0a 6f 6e 20 3c 61 20 68 72  ntation.on <a hr
6d30: 65 66 3d 22 6f 70 63 6f 64 65 2e 68 74 6d 6c 22  ef="opcode.html"
6d40: 3e 61 76 61 69 6c 61 62 6c 65 20 6f 70 63 6f 64  >available opcod
6d50: 65 73 3c 2f 61 3e 20 66 6f 72 20 74 68 65 20 76  es</a> for the v
6d60: 69 72 74 75 61 6c 20 6d 61 63 68 69 6e 65 2e 3c  irtual machine.<
6d70: 2f 70 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20  /p>.}...Section 
6d80: 65 78 70 72 65 73 73 69 6f 6e 20 65 78 70 72 0a  expression expr.
6d90: 0a 53 79 6e 74 61 78 20 7b 65 78 70 72 7d 20 7b  .Syntax {expr} {
6da0: 0a 3c 65 78 70 72 3e 20 3c 62 69 6e 61 72 79 2d  .<expr> <binary-
6db0: 6f 70 3e 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78  op> <expr> |.<ex
6dc0: 70 72 3e 20 3c 6c 69 6b 65 2d 6f 70 3e 20 3c 65  pr> <like-op> <e
6dd0: 78 70 72 3e 20 7c 0a 3c 75 6e 61 72 79 2d 6f 70  xpr> |.<unary-op
6de0: 3e 20 3c 65 78 70 72 3e 20 7c 0a 28 20 3c 65 78  > <expr> |.( <ex
6df0: 70 72 3e 20 29 20 7c 0a 3c 63 6f 6c 75 6d 6e 2d  pr> ) |.<column-
6e00: 6e 61 6d 65 3e 20 7c 0a 3c 74 61 62 6c 65 2d 6e  name> |.<table-n
6e10: 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d 6e  ame> . <column-n
6e20: 61 6d 65 3e 20 7c 0a 3c 64 61 74 61 62 61 73 65  ame> |.<database
6e30: 2d 6e 61 6d 65 3e 20 2e 20 3c 74 61 62 6c 65 2d  -name> . <table-
6e40: 6e 61 6d 65 3e 20 2e 20 3c 63 6f 6c 75 6d 6e 2d  name> . <column-
6e50: 6e 61 6d 65 3e 20 7c 0a 3c 6c 69 74 65 72 61 6c  name> |.<literal
6e60: 2d 76 61 6c 75 65 3e 20 7c 0a 3c 66 75 6e 63 74  -value> |.<funct
6e70: 69 6f 6e 2d 6e 61 6d 65 3e 20 28 20 3c 65 78 70  ion-name> ( <exp
6e80: 72 2d 6c 69 73 74 3e 20 7c 20 53 54 41 52 20 29  r-list> | STAR )
6e90: 20 7c 0a 3c 65 78 70 72 3e 20 49 53 4e 55 4c 4c   |.<expr> ISNULL
6ea0: 20 7c 0a 3c 65 78 70 72 3e 20 4e 4f 54 4e 55 4c   |.<expr> NOTNUL
6eb0: 4c 20 7c 0a 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d  L |.<expr> [NOT]
6ec0: 20 42 45 54 57 45 45 4e 20 3c 65 78 70 72 3e 20   BETWEEN <expr> 
6ed0: 41 4e 44 20 3c 65 78 70 72 3e 20 7c 0a 3c 65 78  AND <expr> |.<ex
6ee0: 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20 28 20 3c  pr> [NOT] IN ( <
6ef0: 76 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c 0a  value-list> ) |.
6f00: 3c 65 78 70 72 3e 20 5b 4e 4f 54 5d 20 49 4e 20  <expr> [NOT] IN 
6f10: 28 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d  ( <select-statem
6f20: 65 6e 74 3e 20 29 20 7c 0a 3c 65 78 70 72 3e 20  ent> ) |.<expr> 
6f30: 5b 4e 4f 54 5d 20 49 4e 20 5b 3c 64 61 74 61 62  [NOT] IN [<datab
6f40: 61 73 65 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61  ase-name> .] <ta
6f50: 62 6c 65 2d 6e 61 6d 65 3e 20 7c 0a 28 20 3c 73  ble-name> |.( <s
6f60: 65 6c 65 63 74 2d 73 74 61 74 65 6d 65 6e 74 3e  elect-statement>
6f70: 20 29 20 7c 0a 43 41 53 45 20 5b 3c 65 78 70 72   ) |.CASE [<expr
6f80: 3e 5d 20 4c 50 20 57 48 45 4e 20 3c 65 78 70 72  >] LP WHEN <expr
6f90: 3e 20 54 48 45 4e 20 3c 65 78 70 72 3e 20 52 50  > THEN <expr> RP
6fa0: 50 4c 55 53 20 5b 45 4c 53 45 20 3c 65 78 70 72  PLUS [ELSE <expr
6fb0: 3e 5d 20 45 4e 44 0a 7d 20 7b 6c 69 6b 65 2d 6f  >] END.} {like-o
6fc0: 70 7d 20 7b 0a 4c 49 4b 45 20 7c 20 47 4c 4f 42  p} {.LIKE | GLOB
6fd0: 20 7c 20 4e 4f 54 20 4c 49 4b 45 20 7c 20 4e 4f   | NOT LIKE | NO
6fe0: 54 20 47 4c 4f 42 0a 7d 0a 0a 70 75 74 73 20 7b  T GLOB.}..puts {
6ff0: 0a 3c 70 3e 54 68 69 73 20 73 65 63 74 69 6f 6e  .<p>This section
7000: 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72   is different fr
7010: 6f 6d 20 74 68 65 20 6f 74 68 65 72 73 2e 20 20  om the others.  
7020: 4d 6f 73 74 20 6f 74 68 65 72 20 73 65 63 74 69  Most other secti
7030: 6f 6e 73 20 6f 66 0a 74 68 69 73 20 64 6f 63 75  ons of.this docu
7040: 6d 65 6e 74 20 74 61 6c 6b 73 20 61 62 6f 75 74  ment talks about
7050: 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 53 51   a particular SQ
7060: 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 54 68 69 73  L command.  This
7070: 20 73 65 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f   section does.no
7080: 74 20 74 61 6c 6b 20 61 62 6f 75 74 20 61 20 73  t talk about a s
7090: 74 61 6e 64 61 6c 6f 6e 65 20 63 6f 6d 6d 61 6e  tandalone comman
70a0: 64 20 62 75 74 20 61 62 6f 75 74 20 22 65 78 70  d but about "exp
70b0: 72 65 73 73 69 6f 6e 73 22 20 77 68 69 63 68 20  ressions" which 
70c0: 61 72 65 20 0a 73 75 62 63 6f 6d 70 6f 6e 65 6e  are .subcomponen
70d0: 74 73 20 6f 66 20 6d 6f 73 74 20 6f 74 68 65 72  ts of most other
70e0: 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e 0a 0a   commands.</p>..
70f0: 3c 70 3e 53 51 4c 69 74 65 20 75 6e 64 65 72 73  <p>SQLite unders
7100: 74 61 6e 64 73 20 74 68 65 20 66 6f 6c 6c 6f 77  tands the follow
7110: 69 6e 67 20 62 69 6e 61 72 79 20 6f 70 65 72 61  ing binary opera
7120: 74 6f 72 73 2c 20 69 6e 20 6f 72 64 65 72 20 66  tors, in order f
7130: 72 6f 6d 0a 68 69 67 68 65 73 74 20 74 6f 20 6c  rom.highest to l
7140: 6f 77 65 73 74 20 70 72 65 63 65 64 65 6e 63 65  owest precedence
7150: 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f  :</p>..<blockquo
7160: 74 65 3e 3c 70 72 65 3e 0a 3c 66 6f 6e 74 20 63  te><pre>.<font c
7170: 6f 6c 6f 72 3d 22 23 32 63 32 63 66 30 22 3e 3c  olor="#2c2cf0"><
7180: 62 69 67 3e 7c 7c 0a 2a 20 20 20 20 2f 20 20 20  big>||.*    /   
7190: 20 25 0a 2b 20 20 20 20 2d 0a 26 6c 74 3b 26 6c   %.+    -.&lt;&l
71a0: 74 3b 20 20 20 26 67 74 3b 26 67 74 3b 20 20 20  t;   &gt;&gt;   
71b0: 26 61 6d 70 3b 20 20 20 20 7c 0a 26 6c 74 3b 20  &amp;    |.&lt; 
71c0: 20 20 20 26 6c 74 3b 3d 20 20 20 26 67 74 3b 20     &lt;=   &gt; 
71d0: 20 20 20 26 67 74 3b 3d 0a 3d 20 20 20 20 3d 3d     &gt;=.=    ==
71e0: 20 20 20 21 3d 20 20 20 26 6c 74 3b 26 67 74 3b     !=   &lt;&gt;
71f0: 20 20 20 3c 2f 62 69 67 3e 49 4e 0a 41 4e 44 20     </big>IN.AND 
7200: 20 20 0a 4f 52 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70    .OR</font>.</p
7210: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
7220: 0a 0a 3c 70 3e 53 75 70 70 6f 72 74 65 64 20 75  ..<p>Supported u
7230: 6e 61 72 79 20 6f 70 65 72 61 74 65 72 73 20 61  nary operaters a
7240: 72 65 20 74 68 65 73 65 3a 3c 2f 70 3e 0a 0a 3c  re these:</p>..<
7250: 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e  blockquote><pre>
7260: 0a 3c 66 6f 6e 74 20 63 6f 6c 6f 72 3d 22 23 32  .<font color="#2
7270: 63 32 63 66 30 22 3e 3c 62 69 67 3e 2d 20 20 20  c2cf0"><big>-   
7280: 20 2b 20 20 20 20 21 20 20 20 20 7e 3c 2f 62 69   +    !    ~</bi
7290: 67 3e 3c 2f 66 6f 6e 74 3e 0a 3c 2f 70 72 65 3e  g></font>.</pre>
72a0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c  </blockquote>..<
72b0: 70 3e 41 6e 79 20 53 51 4c 69 74 65 20 76 61 6c  p>Any SQLite val
72c0: 75 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 61  ue can be used a
72d0: 73 20 70 61 72 74 20 6f 66 20 61 6e 20 65 78 70  s part of an exp
72e0: 72 65 73 73 69 6f 6e 2e 20 20 0a 46 6f 72 20 61  ression.  .For a
72f0: 72 69 74 68 6d 65 74 69 63 20 6f 70 65 72 61 74  rithmetic operat
7300: 69 6f 6e 73 2c 20 69 6e 74 65 67 65 72 73 20 61  ions, integers a
7310: 72 65 20 74 72 65 61 74 65 64 20 61 73 20 69 6e  re treated as in
7320: 74 65 67 65 72 73 2e 0a 53 74 72 69 6e 67 73 20  tegers..Strings 
7330: 61 72 65 20 66 69 72 73 74 20 63 6f 6e 76 65 72  are first conver
7340: 74 65 64 20 74 6f 20 72 65 61 6c 20 6e 75 6d 62  ted to real numb
7350: 65 72 73 20 75 73 69 6e 67 20 3c 62 3e 61 74 6f  ers using <b>ato
7360: 66 28 29 3c 2f 62 3e 2e 0a 46 6f 72 20 63 6f 6d  f()</b>..For com
7370: 70 61 72 69 73 6f 6e 20 6f 70 65 72 61 74 6f 72  parison operator
7380: 73 2c 20 6e 75 6d 62 65 72 73 20 63 6f 6d 70 61  s, numbers compa
7390: 72 65 20 61 73 20 6e 75 6d 62 65 72 73 20 61 6e  re as numbers an
73a0: 64 20 73 74 72 69 6e 67 73 0a 63 6f 6d 70 61 72  d strings.compar
73b0: 65 20 75 73 69 6e 67 20 74 68 65 20 3c 62 3e 73  e using the <b>s
73c0: 74 72 63 6d 70 28 29 3c 2f 62 3e 20 66 75 6e 63  trcmp()</b> func
73d0: 74 69 6f 6e 2e 0a 4e 6f 74 65 20 74 68 61 74 20  tion..Note that 
73e0: 74 68 65 72 65 20 61 72 65 20 74 77 6f 20 76 61  there are two va
73f0: 72 69 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20  riations of the 
7400: 65 71 75 61 6c 73 20 61 6e 64 20 6e 6f 74 20 65  equals and not e
7410: 71 75 61 6c 73 0a 6f 70 65 72 61 74 6f 72 73 2e  quals.operators.
7420: 20 20 45 71 75 61 6c 73 20 63 61 6e 20 62 65 20    Equals can be 
7430: 65 69 74 68 65 72 7d 0a 70 75 74 73 20 22 5b 4f  either}.puts "[O
7440: 70 65 72 61 74 6f 72 20 3d 5d 20 6f 72 20 5b 4f  perator =] or [O
7450: 70 65 72 61 74 6f 72 20 3d 3d 5d 2e 0a 54 68 65  perator ==]..The
7460: 20 6e 6f 6e 2d 65 71 75 61 6c 73 20 6f 70 65 72   non-equals oper
7470: 61 74 6f 72 20 63 61 6e 20 62 65 20 65 69 74 68  ator can be eith
7480: 65 72 0a 5b 4f 70 65 72 61 74 6f 72 20 21 3d 5d  er.[Operator !=]
7490: 20 6f 72 20 5b 4f 70 65 72 61 74 6f 72 20 7b 26   or [Operator {&
74a0: 6c 74 3b 26 67 74 3b 7d 5d 2e 0a 54 68 65 20 5b  lt;&gt;}]..The [
74b0: 4f 70 65 72 61 74 6f 72 20 7c 7c 5d 20 6f 70 65  Operator ||] ope
74c0: 72 61 74 6f 72 20 69 73 20 5c 22 63 6f 6e 63 61  rator is \"conca
74d0: 74 65 6e 61 74 65 5c 22 20 2d 20 69 74 20 6a 6f  tenate\" - it jo
74e0: 69 6e 73 20 74 6f 67 65 74 68 65 72 0a 74 68 65  ins together.the
74f0: 20 74 77 6f 20 73 74 72 69 6e 67 73 20 6f 66 20   two strings of 
7500: 69 74 73 20 6f 70 65 72 61 6e 64 73 2e 0a 54 68  its operands..Th
7510: 65 20 6f 70 65 72 61 74 6f 72 20 5b 4f 70 65 72  e operator [Oper
7520: 61 74 6f 72 20 25 5d 20 6f 75 74 70 75 74 73 20  ator %] outputs 
7530: 74 68 65 20 72 65 6d 61 69 6e 64 65 72 20 6f 66  the remainder of
7540: 20 69 74 73 20 6c 65 66 74 20 0a 6f 70 65 72 61   its left .opera
7550: 6e 64 20 6d 6f 64 75 6c 6f 20 69 74 73 20 72 69  nd modulo its ri
7560: 67 68 74 20 6f 70 65 72 61 6e 64 2e 3c 2f 70 3e  ght operand.</p>
7570: 22 0a 70 75 74 73 20 7b 0a 0a 3c 61 20 6e 61 6d  ".puts {..<a nam
7580: 65 3d 22 6c 69 6b 65 22 3e 3c 2f 61 3e 0a 3c 70  e="like"></a>.<p
7590: 3e 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61 74  >The LIKE operat
75a0: 6f 72 20 64 6f 65 73 20 61 20 77 69 6c 64 63 61  or does a wildca
75b0: 72 64 20 63 6f 6d 70 61 72 69 73 69 6f 6e 2e 20  rd comparision. 
75c0: 20 54 68 65 20 6f 70 65 72 61 6e 64 0a 74 6f 20   The operand.to 
75d0: 74 68 65 20 72 69 67 68 74 20 63 6f 6e 74 61 69  the right contai
75e0: 6e 73 20 74 68 65 20 77 69 6c 64 63 61 72 64 73  ns the wildcards
75f0: 2e 7d 0a 70 75 74 73 20 22 41 20 70 65 72 63 65  .}.puts "A perce
7600: 6e 74 20 73 79 6d 62 6f 6c 20 5b 4f 70 65 72 61  nt symbol [Opera
7610: 74 6f 72 20 25 5d 20 69 6e 20 74 68 65 20 72 69  tor %] in the ri
7620: 67 68 74 20 6f 70 65 72 61 6e 64 0a 6d 61 74 63  ght operand.matc
7630: 68 65 73 20 61 6e 79 20 73 65 71 75 65 6e 63 65  hes any sequence
7640: 20 6f 66 20 7a 65 72 6f 20 6f 72 20 6d 6f 72 65   of zero or more
7650: 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e 20 74   characters on t
7660: 68 65 20 6c 65 66 74 2e 0a 41 6e 20 75 6e 64 65  he left..An unde
7670: 72 73 63 6f 72 65 20 5b 4f 70 65 72 61 74 6f 72  rscore [Operator
7680: 20 5f 5d 20 6f 6e 20 74 68 65 20 72 69 67 68 74   _] on the right
7690: 0a 6d 61 74 63 68 65 73 20 61 6e 79 20 73 69 6e  .matches any sin
76a0: 67 6c 65 20 63 68 61 72 61 63 74 65 72 20 6f 6e  gle character on
76b0: 20 74 68 65 20 6c 65 66 74 2e 22 0a 70 75 74 73   the left.".puts
76c0: 20 7b 54 68 65 20 4c 49 4b 45 20 6f 70 65 72 61   {The LIKE opera
76d0: 74 6f 72 20 69 73 0a 6e 6f 74 20 63 61 73 65 20  tor is.not case 
76e0: 73 65 6e 73 69 74 69 76 65 20 61 6e 64 20 77 69  sensitive and wi
76f0: 6c 6c 20 6d 61 74 63 68 20 75 70 70 65 72 20 63  ll match upper c
7700: 61 73 65 20 63 68 61 72 61 63 74 65 72 73 20 6f  ase characters o
7710: 6e 20 6f 6e 65 0a 73 69 64 65 20 61 67 61 69 6e  n one.side again
7720: 73 74 20 6c 6f 77 65 72 20 63 61 73 65 20 63 68  st lower case ch
7730: 61 72 61 63 74 65 72 73 20 6f 6e 20 74 68 65 20  aracters on the 
7740: 6f 74 68 65 72 2e 0a 28 41 20 62 75 67 3a 20 53  other..(A bug: S
7750: 51 4c 69 74 65 20 6f 6e 6c 79 20 75 6e 64 65 72  QLite only under
7760: 73 74 61 6e 64 73 20 75 70 70 65 72 2f 6c 6f 77  stands upper/low
7770: 65 72 20 63 61 73 65 20 66 6f 72 20 37 2d 62 69  er case for 7-bi
7780: 74 20 4c 61 74 69 6e 0a 63 68 61 72 61 63 74 65  t Latin.characte
7790: 72 73 2e 20 20 48 65 6e 63 65 20 74 68 65 20 4c  rs.  Hence the L
77a0: 49 4b 45 20 6f 70 65 72 61 74 6f 72 20 69 73 20  IKE operator is 
77b0: 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 20 66  case sensitive f
77c0: 6f 72 0a 38 2d 62 69 74 20 69 73 6f 38 38 35 39  or.8-bit iso8859
77d0: 20 63 68 61 72 61 63 74 65 72 73 20 6f 72 20 55   characters or U
77e0: 54 46 2d 38 20 63 68 61 72 61 63 74 65 72 73 2e  TF-8 characters.
77f0: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 74    For example,.t
7800: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 62  he expression <b
7810: 3e 27 61 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e  >'a'&nbsp;LIKE&n
7820: 62 73 70 3b 27 41 27 3c 2f 62 3e 20 69 73 20 54  bsp;'A'</b> is T
7830: 52 55 45 20 62 75 74 0a 3c 62 3e 27 26 61 65 6c  RUE but.<b>'&ael
7840: 69 67 3b 27 26 6e 62 73 70 3b 4c 49 4b 45 26 6e  ig;'&nbsp;LIKE&n
7850: 62 73 70 3b 27 26 41 45 6c 69 67 3b 27 3c 2f 62  bsp;'&AElig;'</b
7860: 3e 20 69 73 20 46 41 4c 53 45 2e 29 2e 20 20 54  > is FALSE.).  T
7870: 68 65 20 69 6e 66 69 78 20 0a 4c 49 4b 45 20 6f  he infix .LIKE o
7880: 70 65 72 61 74 6f 72 20 69 73 20 69 64 65 6e 74  perator is ident
7890: 69 63 61 6c 20 74 68 65 20 75 73 65 72 20 66 75  ical the user fu
78a0: 6e 63 74 69 6f 6e 20 3c 61 20 68 72 65 66 3d 22  nction <a href="
78b0: 23 6c 69 6b 65 46 75 6e 63 22 3e 0a 6c 69 6b 65  #likeFunc">.like
78c0: 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f  (<i>X</i>,<i>Y</
78d0: 69 3e 29 3c 2f 61 3e 2e 0a 3c 2f 70 3e 0a 0a 3c  i>)</a>..</p>..<
78e0: 61 20 6e 61 6d 65 3d 22 67 6c 6f 62 22 3e 3c 2f  a name="glob"></
78f0: 61 3e 0a 3c 70 3e 54 68 65 20 47 4c 4f 42 20 6f  a>.<p>The GLOB o
7900: 70 65 72 61 74 6f 72 20 69 73 20 73 69 6d 69 6c  perator is simil
7910: 61 72 20 74 6f 20 4c 49 4b 45 20 62 75 74 20 75  ar to LIKE but u
7920: 73 65 73 20 74 68 65 20 55 6e 69 78 0a 66 69 6c  ses the Unix.fil
7930: 65 20 67 6c 6f 62 62 69 6e 67 20 73 79 6e 74 61  e globbing synta
7940: 78 20 66 6f 72 20 69 74 73 20 77 69 6c 64 63 61  x for its wildca
7950: 72 64 73 2e 20 20 41 6c 73 6f 2c 20 47 4c 4f 42  rds.  Also, GLOB
7960: 20 69 73 20 63 61 73 65 0a 73 65 6e 73 69 74 69   is case.sensiti
7970: 76 65 2c 20 75 6e 6c 69 6b 65 20 4c 49 4b 45 2e  ve, unlike LIKE.
7980: 20 20 42 6f 74 68 20 47 4c 4f 42 20 61 6e 64 20    Both GLOB and 
7990: 4c 49 4b 45 20 6d 61 79 20 62 65 20 70 72 65 63  LIKE may be prec
79a0: 65 64 65 64 20 62 79 0a 74 68 65 20 4e 4f 54 20  eded by.the NOT 
79b0: 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76 65 72  keyword to inver
79c0: 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66 20 74  t the sense of t
79d0: 68 65 20 74 65 73 74 2e 20 20 54 68 65 20 69 6e  he test.  The in
79e0: 66 69 78 20 47 4c 4f 42 20 0a 6f 70 65 72 61 74  fix GLOB .operat
79f0: 6f 72 20 69 73 20 69 64 65 6e 74 69 63 61 6c 20  or is identical 
7a00: 74 68 65 20 75 73 65 72 20 66 75 6e 63 74 69 6f  the user functio
7a10: 6e 20 3c 61 20 68 72 65 66 3d 22 23 67 6c 6f 62  n <a href="#glob
7a20: 46 75 6e 63 22 3e 0a 67 6c 6f 62 28 3c 69 3e 58  Func">.glob(<i>X
7a30: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
7a40: 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 41 20 63 6f  a>.</p>..<p>A co
7a50: 6c 75 6d 6e 20 6e 61 6d 65 20 63 61 6e 20 62 65  lumn name can be
7a60: 20 61 6e 79 20 6f 66 20 74 68 65 20 6e 61 6d 65   any of the name
7a70: 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65  s defined in the
7a80: 20 43 52 45 41 54 45 20 54 41 42 4c 45 0a 73 74   CREATE TABLE.st
7a90: 61 74 65 6d 65 6e 74 20 6f 72 20 6f 6e 65 20 6f  atement or one o
7aa0: 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20  f the following 
7ab0: 73 70 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69  special identifi
7ac0: 65 72 73 3a 20 22 3c 62 3e 52 4f 57 49 44 3c 2f  ers: "<b>ROWID</
7ad0: 62 3e 22 2c 0a 22 3c 62 3e 4f 49 44 3c 2f 62 3e  b>",."<b>OID</b>
7ae0: 22 2c 20 6f 72 20 22 3c 62 3e 5f 52 4f 57 49 44  ", or "<b>_ROWID
7af0: 5f 3c 2f 62 3e 22 2e 0a 54 68 65 73 65 20 73 70  _</b>"..These sp
7b00: 65 63 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72  ecial identifier
7b10: 73 20 61 6c 6c 20 64 65 73 63 72 69 62 65 20 74  s all describe t
7b20: 68 65 0a 75 6e 69 71 75 65 20 72 61 6e 64 6f 6d  he.unique random
7b30: 20 69 6e 74 65 67 65 72 20 6b 65 79 20 28 74 68   integer key (th
7b40: 65 20 22 72 6f 77 20 6b 65 79 22 29 20 61 73 73  e "row key") ass
7b50: 6f 63 69 61 74 65 64 20 77 69 74 68 20 65 76 65  ociated with eve
7b60: 72 79 20 0a 72 6f 77 20 6f 66 20 65 76 65 72 79  ry .row of every
7b70: 20 74 61 62 6c 65 2e 0a 54 68 65 20 73 70 65 63   table..The spec
7b80: 69 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 20  ial identifiers 
7b90: 6f 6e 6c 79 20 72 65 66 65 72 20 74 6f 20 74 68  only refer to th
7ba0: 65 20 72 6f 77 20 6b 65 79 20 69 66 20 74 68 65  e row key if the
7bb0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 0a 73 74   CREATE TABLE.st
7bc0: 61 74 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74  atement does not
7bd0: 20 64 65 66 69 6e 65 20 61 20 72 65 61 6c 20 63   define a real c
7be0: 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68 65 20 73  olumn with the s
7bf0: 61 6d 65 20 6e 61 6d 65 2e 20 20 52 6f 77 20 6b  ame name.  Row k
7c00: 65 79 73 0a 61 63 74 20 6c 69 6b 65 20 72 65 61  eys.act like rea
7c10: 64 2d 6f 6e 6c 79 20 63 6f 6c 75 6d 6e 73 2e 20  d-only columns. 
7c20: 20 41 20 72 6f 77 20 6b 65 79 20 63 61 6e 20 62   A row key can b
7c30: 65 20 75 73 65 64 20 61 6e 79 77 68 65 72 65 20  e used anywhere 
7c40: 61 20 72 65 67 75 6c 61 72 0a 63 6f 6c 75 6d 6e  a regular.column
7c50: 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 65 78   can be used, ex
7c60: 63 65 70 74 20 74 68 61 74 20 79 6f 75 20 63 61  cept that you ca
7c70: 6e 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20  nnot change the 
7c80: 76 61 6c 75 65 0a 6f 66 20 61 20 72 6f 77 20 6b  value.of a row k
7c90: 65 79 20 69 6e 20 61 6e 20 55 50 44 41 54 45 20  ey in an UPDATE 
7ca0: 6f 72 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d  or INSERT statem
7cb0: 65 6e 74 2e 0a 22 53 45 4c 45 43 54 20 2a 20 2e  ent.."SELECT * .
7cc0: 2e 2e 22 20 64 6f 65 73 20 6e 6f 74 20 72 65 74  .." does not ret
7cd0: 75 72 6e 20 74 68 65 20 72 6f 77 20 6b 65 79 2e  urn the row key.
7ce0: 3c 2f 70 3e 0a 0a 3c 70 3e 53 45 4c 45 43 54 20  </p>..<p>SELECT 
7cf0: 73 74 61 74 65 6d 65 6e 74 73 20 63 61 6e 20 61  statements can a
7d00: 70 70 65 61 72 20 69 6e 20 65 78 70 72 65 73 73  ppear in express
7d10: 69 6f 6e 73 20 61 73 20 65 69 74 68 65 72 20 74  ions as either t
7d20: 68 65 0a 72 69 67 68 74 2d 68 61 6e 64 20 6f 70  he.right-hand op
7d30: 65 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20  erand of the IN 
7d40: 6f 70 65 72 61 74 6f 72 20 6f 72 20 61 73 20 61  operator or as a
7d50: 20 73 63 61 6c 61 72 20 71 75 61 6e 74 69 74 79   scalar quantity
7d60: 2e 0a 49 6e 20 62 6f 74 68 20 63 61 73 65 73 2c  ..In both cases,
7d70: 20 74 68 65 20 53 45 4c 45 43 54 20 73 68 6f 75   the SELECT shou
7d80: 6c 64 20 68 61 76 65 20 6f 6e 6c 79 20 61 20 73  ld have only a s
7d90: 69 6e 67 6c 65 20 63 6f 6c 75 6d 6e 20 69 6e 20  ingle column in 
7da0: 69 74 73 0a 72 65 73 75 6c 74 2e 20 20 43 6f 6d  its.result.  Com
7db0: 70 6f 75 6e 64 20 53 45 4c 45 43 54 73 20 28 63  pound SELECTs (c
7dc0: 6f 6e 6e 65 63 74 65 64 20 77 69 74 68 20 6b 65  onnected with ke
7dd0: 79 77 6f 72 64 73 20 6c 69 6b 65 20 55 4e 49 4f  ywords like UNIO
7de0: 4e 20 6f 72 0a 45 58 43 45 50 54 29 20 61 72 65  N or.EXCEPT) are
7df0: 20 61 6c 6c 6f 77 65 64 2e 0a 41 20 53 45 4c 45   allowed..A SELE
7e00: 43 54 20 69 6e 20 61 6e 20 65 78 70 72 65 73 73  CT in an express
7e10: 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64  ion is evaluated
7e20: 20 6f 6e 63 65 20 62 65 66 6f 72 65 20 61 6e 79   once before any
7e30: 20 6f 74 68 65 72 20 70 72 6f 63 65 73 73 69 6e   other processin
7e40: 67 0a 69 73 20 70 65 72 66 6f 72 6d 65 64 2c 20  g.is performed, 
7e50: 73 6f 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 65  so none of the e
7e60: 78 70 72 65 73 73 69 6f 6e 73 20 77 69 74 68 69  xpressions withi
7e70: 6e 20 74 68 65 20 73 65 6c 65 63 74 20 69 74 73  n the select its
7e80: 65 6c 66 20 63 61 6e 0a 72 65 66 65 72 20 74 6f  elf can.refer to
7e90: 20 71 75 61 6e 74 69 74 69 65 73 20 69 6e 20 74   quantities in t
7ea0: 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 65 78  he containing ex
7eb0: 70 72 65 73 73 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c  pression.</p>..<
7ec0: 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54 20  p>When a SELECT 
7ed0: 69 73 20 74 68 65 20 72 69 67 68 74 20 6f 70 65  is the right ope
7ee0: 72 61 6e 64 20 6f 66 20 74 68 65 20 49 4e 20 6f  rand of the IN o
7ef0: 70 65 72 61 74 6f 72 2c 20 74 68 65 20 49 4e 0a  perator, the IN.
7f00: 6f 70 65 72 61 74 6f 72 20 72 65 74 75 72 6e 73  operator returns
7f10: 20 54 52 55 45 20 69 66 20 74 68 65 20 72 65 73   TRUE if the res
7f20: 75 6c 74 20 6f 66 20 74 68 65 20 6c 65 66 74 20  ult of the left 
7f30: 6f 70 65 72 61 6e 64 20 69 73 20 61 6e 79 20 6f  operand is any o
7f40: 66 0a 74 68 65 20 76 61 6c 75 65 73 20 67 65 6e  f.the values gen
7f50: 65 72 61 74 65 64 20 62 79 20 74 68 65 20 73 65  erated by the se
7f60: 6c 65 63 74 2e 20 20 54 68 65 20 49 4e 20 6f 70  lect.  The IN op
7f70: 65 72 61 74 6f 72 20 6d 61 79 20 62 65 20 70 72  erator may be pr
7f80: 65 63 65 64 65 64 0a 62 79 20 74 68 65 20 4e 4f  eceded.by the NO
7f90: 54 20 6b 65 79 77 6f 72 64 20 74 6f 20 69 6e 76  T keyword to inv
7fa0: 65 72 74 20 74 68 65 20 73 65 6e 73 65 20 6f 66  ert the sense of
7fb0: 20 74 68 65 20 74 65 73 74 2e 3c 2f 70 3e 0a 0a   the test.</p>..
7fc0: 3c 70 3e 57 68 65 6e 20 61 20 53 45 4c 45 43 54  <p>When a SELECT
7fd0: 20 61 70 70 65 61 72 73 20 77 69 74 68 69 6e 20   appears within 
7fe0: 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 62 75  an expression bu
7ff0: 74 20 69 73 20 6e 6f 74 20 74 68 65 20 72 69 67  t is not the rig
8000: 68 74 0a 6f 70 65 72 61 6e 64 20 6f 66 20 61 6e  ht.operand of an
8010: 20 49 4e 20 6f 70 65 72 61 74 6f 72 2c 20 74 68   IN operator, th
8020: 65 6e 20 74 68 65 20 66 69 72 73 74 20 72 6f 77  en the first row
8030: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 6f   of the result o
8040: 66 20 74 68 65 0a 53 45 4c 45 43 54 20 62 65 63  f the.SELECT bec
8050: 6f 6d 65 73 20 74 68 65 20 76 61 6c 75 65 20 75  omes the value u
8060: 73 65 64 20 69 6e 20 74 68 65 20 65 78 70 72 65  sed in the expre
8070: 73 73 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 53  ssion.  If the S
8080: 45 4c 45 43 54 20 79 69 65 6c 64 73 0a 6d 6f 72  ELECT yields.mor
8090: 65 20 74 68 61 6e 20 6f 6e 65 20 72 65 73 75 6c  e than one resul
80a0: 74 20 72 6f 77 2c 20 61 6c 6c 20 72 6f 77 73 20  t row, all rows 
80b0: 61 66 74 65 72 20 74 68 65 20 66 69 72 73 74 20  after the first 
80c0: 61 72 65 20 69 67 6e 6f 72 65 64 2e 20 20 49 66  are ignored.  If
80d0: 0a 74 68 65 20 53 45 4c 45 43 54 20 79 65 69 6c  .the SELECT yeil
80e0: 64 73 20 6e 6f 20 72 6f 77 73 2c 20 74 68 65 6e  ds no rows, then
80f0: 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68   the value of th
8100: 65 20 53 45 4c 45 43 54 20 69 73 20 4e 55 4c 4c  e SELECT is NULL
8110: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 42 6f 74 68 20 73  .</p>..<p>Both s
8120: 69 6d 70 6c 65 20 61 6e 64 20 61 67 67 72 65 67  imple and aggreg
8130: 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 72  ate functions ar
8140: 65 20 73 75 70 70 6f 72 74 65 64 2e 20 20 41 20  e supported.  A 
8150: 73 69 6d 70 6c 65 0a 66 75 6e 63 74 69 6f 6e 20  simple.function 
8160: 63 61 6e 20 62 65 20 75 73 65 64 20 69 6e 20 61  can be used in a
8170: 6e 79 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 20  ny expression.  
8180: 53 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 73  Simple functions
8190: 20 72 65 74 75 72 6e 0a 61 20 72 65 73 75 6c 74   return.a result
81a0: 20 69 6d 6d 65 64 69 61 74 65 6c 79 20 62 61 73   immediately bas
81b0: 65 64 20 6f 6e 20 74 68 65 69 72 20 69 6e 70 75  ed on their inpu
81c0: 74 73 2e 20 20 41 67 67 72 65 67 61 74 65 20 66  ts.  Aggregate f
81d0: 75 6e 63 74 69 6f 6e 73 0a 6d 61 79 20 6f 6e 6c  unctions.may onl
81e0: 79 20 62 65 20 75 73 65 64 20 69 6e 20 61 20 53  y be used in a S
81f0: 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e  ELECT statement.
8200: 20 20 41 67 67 72 65 67 61 74 65 20 66 75 6e 63    Aggregate func
8210: 74 69 6f 6e 73 20 63 6f 6d 70 75 74 65 0a 74 68  tions compute.th
8220: 65 69 72 20 72 65 73 75 6c 74 20 61 63 72 6f 73  eir result acros
8230: 73 20 61 6c 6c 20 72 6f 77 73 20 6f 66 20 74 68  s all rows of th
8240: 65 20 72 65 73 75 6c 74 20 73 65 74 2e 3c 2f 70  e result set.</p
8250: 3e 0a 0a 3c 70 3e 54 68 65 20 66 75 6e 63 74 69  >..<p>The functi
8260: 6f 6e 73 20 73 68 6f 77 6e 20 62 65 6c 6f 77 20  ons shown below 
8270: 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 62 79  are available by
8280: 20 64 65 66 61 75 6c 74 2e 20 20 41 64 64 69 74   default.  Addit
8290: 69 6f 6e 61 6c 0a 66 75 6e 63 74 69 6f 6e 73 20  ional.functions 
82a0: 6d 61 79 20 62 65 20 77 72 69 74 74 65 6e 20 69  may be written i
82b0: 6e 20 43 20 61 6e 64 20 61 64 64 65 64 20 74 6f  n C and added to
82c0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 65 6e   the database en
82d0: 67 69 6e 65 20 75 73 69 6e 67 0a 74 68 65 20 3c  gine using.the <
82e0: 61 20 68 72 65 66 3d 22 63 5f 69 6e 74 65 72 66  a href="c_interf
82f0: 61 63 65 2e 68 74 6d 6c 23 63 66 75 6e 63 22 3e  ace.html#cfunc">
8300: 73 71 6c 69 74 65 5f 63 72 65 61 74 65 5f 66 75  sqlite_create_fu
8310: 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e 0a 41 50 49  nction()</a>.API
8320: 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20 62 6f  .</p>..<table bo
8330: 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64 64 69  rder=0 cellpaddi
8340: 6e 67 3d 31 30 3e 0a 3c 74 72 3e 0a 3c 74 64 20  ng=10>.<tr>.<td 
8350: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
8360: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
8370: 3d 31 32 30 3e 61 62 73 28 3c 69 3e 58 3c 2f 69  =120>abs(<i>X</i
8380: 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69  >)</td>.<td vali
8390: 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20  gn="top">Return 
83a0: 74 68 65 20 61 62 73 6f 6c 75 74 65 20 76 61 6c  the absolute val
83b0: 75 65 20 6f 66 20 61 72 67 75 6d 65 6e 74 20 3c  ue of argument <
83c0: 69 3e 58 3c 2f 69 3e 2e 3c 2f 74 64 3e 0a 3c 2f  i>X</i>.</td>.</
83d0: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
83e0: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
83f0: 3d 22 72 69 67 68 74 22 3e 63 6f 61 6c 65 73 63  ="right">coalesc
8400: 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c  e(<i>X</i>,<i>Y<
8410: 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74  /i>,...)</td>.<t
8420: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52  d valign="top">R
8430: 65 74 75 72 6e 20 61 20 63 6f 70 79 20 6f 66 20  eturn a copy of 
8440: 74 68 65 20 66 69 72 73 74 20 6e 6f 6e 2d 4e 55  the first non-NU
8450: 4c 4c 20 61 72 67 75 6d 65 6e 74 2e 20 20 49 66  LL argument.  If
8460: 0a 61 6c 6c 20 61 72 67 75 6d 65 6e 74 73 20 61  .all arguments a
8470: 72 65 20 4e 55 4c 4c 20 74 68 65 6e 20 4e 55 4c  re NULL then NUL
8480: 4c 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20  L is returned.  
8490: 54 68 65 72 65 20 6d 75 73 74 20 62 65 20 61 74  There must be at
84a0: 20 6c 65 61 73 74 20 0a 32 20 61 72 67 75 6d 65   least .2 argume
84b0: 6e 74 73 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  nts.</td>.</tr>.
84c0: 0a 3c 74 72 3e 0a 3c 61 20 6e 61 6d 65 3d 22 67  .<tr>.<a name="g
84d0: 6c 6f 62 46 75 6e 63 22 3e 3c 2f 61 3e 0a 3c 74  lobFunc"></a>.<t
84e0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
84f0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 67 6c 6f  lign="right">glo
8500: 62 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c  b(<i>X</i>,<i>Y<
8510: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
8520: 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68 69 73 20  lign="top">This 
8530: 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64  function is used
8540: 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68   to implement th
8550: 65 0a 22 3c 62 3e 59 20 47 4c 4f 42 20 58 3c 2f  e."<b>Y GLOB X</
8560: 62 3e 22 20 73 79 6e 74 61 78 20 6f 66 20 53 51  b>" syntax of SQ
8570: 4c 69 74 65 2e 20 20 54 68 65 0a 3c 61 20 68 72  Lite.  The.<a hr
8580: 65 66 3d 22 63 5f 69 6e 74 65 72 66 61 63 65 2e  ef="c_interface.
8590: 68 74 6d 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69  html#cfunc">sqli
85a0: 74 65 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  te_create_functi
85b0: 6f 6e 28 29 3c 2f 61 3e 20 0a 69 6e 74 65 72 66  on()</a> .interf
85c0: 61 63 65 20 63 61 6e 0a 62 65 20 75 73 65 64 20  ace can.be used 
85d0: 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73  to override this
85e0: 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68   function and th
85f0: 65 72 65 62 79 20 63 68 61 6e 67 65 20 74 68 65  ereby change the
8600: 20 6f 70 65 72 61 74 69 6f 6e 0a 6f 66 20 74 68   operation.of th
8610: 65 20 3c 61 20 68 72 65 66 3d 22 23 67 6c 6f 62  e <a href="#glob
8620: 22 3e 47 4c 4f 42 3c 2f 61 3e 20 6f 70 65 72 61  ">GLOB</a> opera
8630: 74 6f 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  tor.</td>.</tr>.
8640: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
8650: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
8660: 67 68 74 22 3e 69 66 6e 75 6c 6c 28 3c 69 3e 58  ght">ifnull(<i>X
8670: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
8680: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
8690: 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63 6f  top">Return a co
86a0: 70 79 20 6f 66 20 74 68 65 20 66 69 72 73 74 20  py of the first 
86b0: 6e 6f 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e  non-NULL argumen
86c0: 74 2e 20 20 49 66 0a 62 6f 74 68 20 61 72 67 75  t.  If.both argu
86d0: 6d 65 6e 74 73 20 61 72 65 20 4e 55 4c 4c 20 74  ments are NULL t
86e0: 68 65 6e 20 4e 55 4c 4c 20 69 73 20 72 65 74 75  hen NULL is retu
86f0: 72 6e 65 64 2e 20 54 68 69 73 20 62 65 68 61 76  rned. This behav
8700: 65 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 0a  es the same as .
8710: 3c 62 3e 63 6f 61 6c 65 73 63 65 28 29 3c 2f 62  <b>coalesce()</b
8720: 3e 20 61 62 6f 76 65 2e 3c 2f 74 64 3e 0a 3c 2f  > above.</td>.</
8730: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
8740: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
8750: 3d 22 72 69 67 68 74 22 3e 6c 61 73 74 5f 69 6e  ="right">last_in
8760: 73 65 72 74 5f 72 6f 77 69 64 28 29 3c 2f 74 64  sert_rowid()</td
8770: 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  >.<td valign="to
8780: 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20 52 4f  p">Return the RO
8790: 57 49 44 20 6f 66 20 74 68 65 20 6c 61 73 74 20  WID of the last 
87a0: 72 6f 77 20 69 6e 73 65 72 74 20 66 72 6f 6d 20  row insert from 
87b0: 74 68 69 73 0a 63 6f 6e 6e 65 63 74 69 6f 6e 20  this.connection 
87c0: 74 6f 20 74 68 65 20 64 61 74 61 62 61 73 65 2e  to the database.
87d0: 20 20 54 68 69 73 20 69 73 20 74 68 65 20 73 61    This is the sa
87e0: 6d 65 20 76 61 6c 75 65 20 74 68 61 74 20 77 6f  me value that wo
87f0: 75 6c 64 20 62 65 20 72 65 74 75 72 6e 65 64 0a  uld be returned.
8800: 66 72 6f 6d 20 74 68 65 20 3c 62 3e 73 71 6c 69  from the <b>sqli
8810: 74 65 5f 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72  te_last_insert_r
8820: 6f 77 69 64 28 29 3c 2f 62 3e 20 41 50 49 20 66  owid()</b> API f
8830: 75 6e 63 74 69 6f 6e 2e 3c 2f 74 64 3e 0a 3c 2f  unction.</td>.</
8840: 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61  tr>..<tr>.<td va
8850: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
8860: 3d 22 72 69 67 68 74 22 3e 6c 65 6e 67 74 68 28  ="right">length(
8870: 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c  <i>X</i>)</td>.<
8880: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
8890: 52 65 74 75 72 6e 20 74 68 65 20 73 74 72 69 6e  Return the strin
88a0: 67 20 6c 65 6e 67 74 68 20 6f 66 20 3c 69 3e 58  g length of <i>X
88b0: 3c 2f 69 3e 20 69 6e 20 63 68 61 72 61 63 74 65  </i> in characte
88c0: 72 73 2e 0a 49 66 20 53 51 4c 69 74 65 20 69 73  rs..If SQLite is
88d0: 20 63 6f 6e 66 69 67 75 72 65 64 20 74 6f 20 73   configured to s
88e0: 75 70 70 6f 72 74 20 55 54 46 2d 38 2c 20 74 68  upport UTF-8, th
88f0: 65 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  en the number of
8900: 20 55 54 46 2d 38 0a 63 68 61 72 61 63 74 65 72   UTF-8.character
8910: 73 20 69 73 20 72 65 74 75 72 6e 65 64 2c 20 6e  s is returned, n
8920: 6f 74 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66  ot the number of
8930: 20 62 79 74 65 73 2e 3c 2f 74 64 3e 0a 3c 2f 74   bytes.</td>.</t
8940: 72 3e 0a 0a 3c 74 72 3e 0a 3c 61 20 6e 61 6d 65  r>..<tr>.<a name
8950: 3d 22 6c 69 6b 65 46 75 6e 63 22 3e 3c 2f 61 3e  ="likeFunc"></a>
8960: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
8970: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
8980: 6c 69 6b 65 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  like(<i>X</i>,<i
8990: 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >Y</i>)</td>.<td
89a0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68   valign="top">Th
89b0: 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75  is function is u
89c0: 73 65 64 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74  sed to implement
89d0: 20 74 68 65 0a 22 3c 62 3e 59 20 4c 49 4b 45 20   the."<b>Y LIKE 
89e0: 58 3c 2f 62 3e 22 20 73 79 6e 74 61 78 20 6f 66  X</b>" syntax of
89f0: 20 53 51 4c 2e 20 20 54 68 65 0a 3c 61 20 68 72   SQL.  The.<a hr
8a00: 65 66 3d 22 63 5f 69 6e 74 65 72 66 61 63 65 2e  ef="c_interface.
8a10: 68 74 6d 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69  html#cfunc">sqli
8a20: 74 65 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  te_create_functi
8a30: 6f 6e 28 29 3c 2f 61 3e 20 0a 69 6e 74 65 72 66  on()</a> .interf
8a40: 61 63 65 20 63 61 6e 0a 62 65 20 75 73 65 64 20  ace can.be used 
8a50: 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73  to override this
8a60: 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 68   function and th
8a70: 65 72 65 62 79 20 63 68 61 6e 67 65 20 74 68 65  ereby change the
8a80: 20 6f 70 65 72 61 74 69 6f 6e 0a 6f 66 20 74 68   operation.of th
8a90: 65 20 3c 61 20 68 72 65 66 3d 22 23 6c 69 6b 65  e <a href="#like
8aa0: 22 3e 4c 49 4b 45 3c 2f 61 3e 20 6f 70 65 72 61  ">LIKE</a> opera
8ab0: 74 6f 72 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  tor.</td>.</tr>.
8ac0: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
8ad0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
8ae0: 67 68 74 22 3e 6c 6f 77 65 72 28 3c 69 3e 58 3c  ght">lower(<i>X<
8af0: 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  /i>)</td>.<td va
8b00: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
8b10: 6e 20 61 20 63 6f 70 79 20 6f 66 20 73 74 72 69  n a copy of stri
8b20: 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 6c 6c  ng <i>X</i> will
8b30: 20 61 6c 6c 20 63 68 61 72 61 63 74 65 72 73 0a   all characters.
8b40: 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 6c 6f 77  converted to low
8b50: 65 72 20 63 61 73 65 2e 20 20 54 68 65 20 43 20  er case.  The C 
8b60: 6c 69 62 72 61 72 79 20 3c 62 3e 74 6f 6c 6f 77  library <b>tolow
8b70: 65 72 28 29 3c 2f 62 3e 20 72 6f 75 74 69 6e 65  er()</b> routine
8b80: 20 69 73 20 75 73 65 64 0a 66 6f 72 20 74 68 65   is used.for the
8b90: 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 20 77 68 69   conversion, whi
8ba0: 63 68 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68  ch means that th
8bb0: 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 69 67 68  is function migh
8bc0: 74 20 6e 6f 74 0a 77 6f 72 6b 20 63 6f 72 72 65  t not.work corre
8bd0: 63 74 6c 79 20 6f 6e 20 55 54 46 2d 38 20 63 68  ctly on UTF-8 ch
8be0: 61 72 61 63 74 65 72 73 2e 3c 2f 74 64 3e 0a 3c  aracters.</td>.<
8bf0: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
8c00: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
8c10: 6e 3d 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69  n="right">max(<i
8c20: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c  >X</i>,<i>Y</i>,
8c30: 2e 2e 2e 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61  ...)</td>.<td va
8c40: 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72  lign="top">Retur
8c50: 6e 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 77  n the argument w
8c60: 69 74 68 20 74 68 65 20 6d 61 78 69 6d 75 6d 20  ith the maximum 
8c70: 76 61 6c 75 65 2e 20 20 41 72 67 75 6d 65 6e 74  value.  Argument
8c80: 73 0a 6d 61 79 20 62 65 20 73 74 72 69 6e 67 73  s.may be strings
8c90: 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20   in addition to 
8ca0: 6e 75 6d 62 65 72 73 2e 20 20 54 68 65 20 6d 61  numbers.  The ma
8cb0: 78 69 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64  ximum value is d
8cc0: 65 74 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65  etermined.by the
8cd0: 20 75 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65   usual sort orde
8ce0: 72 2e 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62  r.  Note that <b
8cf0: 3e 6d 61 78 28 29 3c 2f 62 3e 20 69 73 20 61 20  >max()</b> is a 
8d00: 73 69 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20  simple function 
8d10: 77 68 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72  when.it has 2 or
8d20: 20 6d 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20   more arguments 
8d30: 62 75 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20  but converts to 
8d40: 61 6e 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  an aggregate fun
8d50: 63 74 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f  ction if given.o
8d60: 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67  nly a single arg
8d70: 75 6d 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72  ument.</td>.</tr
8d80: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
8d90: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
8da0: 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69 3e 58 3c  right">min(<i>X<
8db0: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e  /i>,<i>Y</i>,...
8dc0: 29 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67  )</td>.<td valig
8dd0: 6e 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74  n="top">Return t
8de0: 68 65 20 61 72 67 75 6d 65 6e 74 20 77 69 74 68  he argument with
8df0: 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c   the minimum val
8e00: 75 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 0a 6d  ue.  Arguments.m
8e10: 61 79 20 62 65 20 73 74 72 69 6e 67 73 20 69 6e  ay be strings in
8e20: 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 6e 75 6d   addition to num
8e30: 62 65 72 73 2e 20 20 54 68 65 20 6d 6d 69 6e 69  bers.  The mmini
8e40: 6d 75 6d 20 76 61 6c 75 65 20 69 73 20 64 65 74  mum value is det
8e50: 65 72 6d 69 6e 65 64 0a 62 79 20 74 68 65 20 75  ermined.by the u
8e60: 73 75 61 6c 20 73 6f 72 74 20 6f 72 64 65 72 2e  sual sort order.
8e70: 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d    Note that <b>m
8e80: 69 6e 28 29 3c 2f 62 3e 20 69 73 20 61 20 73 69  in()</b> is a si
8e90: 6d 70 6c 65 20 66 75 6e 63 74 69 6f 6e 20 77 68  mple function wh
8ea0: 65 6e 0a 69 74 20 68 61 73 20 32 20 6f 72 20 6d  en.it has 2 or m
8eb0: 6f 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75  ore arguments bu
8ec0: 74 20 63 6f 6e 76 65 72 74 73 20 74 6f 20 61 6e  t converts to an
8ed0: 20 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74   aggregate funct
8ee0: 69 6f 6e 20 69 66 20 67 69 76 65 6e 0a 6f 6e 6c  ion if given.onl
8ef0: 79 20 61 20 73 69 6e 67 6c 65 20 61 72 67 75 6d  y a single argum
8f00: 65 6e 74 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a  ent.</td>.</tr>.
8f10: 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  .<tr>.<td valign
8f20: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
8f30: 67 68 74 22 3e 6e 75 6c 6c 69 66 28 3c 69 3e 58  ght">nullif(<i>X
8f40: 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f  </i>,<i>Y</i>)</
8f50: 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  td>.<td valign="
8f60: 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65 20  top">Return the 
8f70: 66 69 72 73 74 20 61 72 67 75 6d 65 6e 74 20 69  first argument i
8f80: 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20  f the arguments 
8f90: 61 72 65 20 64 69 66 66 65 72 65 6e 74 2c 20 0a  are different, .
8fa0: 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e  otherwise return
8fb0: 20 4e 55 4c 4c 2e 3c 2f 74 64 3e 0a 3c 2f 74 72   NULL.</td>.</tr
8fc0: 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69  >..<tr>.<td vali
8fd0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
8fe0: 72 69 67 68 74 22 3e 72 61 6e 64 6f 6d 28 2a 29  right">random(*)
8ff0: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
9000: 3d 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20  ="top">Return a 
9010: 72 61 6e 64 6f 6d 20 69 6e 74 65 67 65 72 20 62  random integer b
9020: 65 74 77 65 65 6e 20 2d 32 31 34 37 34 38 33 36  etween -21474836
9030: 34 38 20 61 6e 64 0a 2b 32 31 34 37 34 38 33 36  48 and.+21474836
9040: 34 37 2e 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a  47.</td>.</tr>..
9050: 3c 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  <tr>.<td valign=
9060: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
9070: 68 74 22 3e 72 6f 75 6e 64 28 3c 69 3e 58 3c 2f  ht">round(<i>X</
9080: 69 3e 29 3c 62 72 3e 72 6f 75 6e 64 28 3c 69 3e  i>)<br>round(<i>
9090: 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c  X</i>,<i>Y</i>)<
90a0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
90b0: 22 74 6f 70 22 3e 52 6f 75 6e 64 20 6f 66 66 20  "top">Round off 
90c0: 74 68 65 20 6e 75 6d 62 65 72 20 3c 69 3e 58 3c  the number <i>X<
90d0: 2f 69 3e 20 74 6f 20 3c 69 3e 59 3c 2f 69 3e 20  /i> to <i>Y</i> 
90e0: 64 69 67 69 74 73 20 74 6f 20 74 68 65 0a 72 69  digits to the.ri
90f0: 67 68 74 20 6f 66 20 74 68 65 20 64 65 63 69 6d  ght of the decim
9100: 61 6c 20 70 6f 69 6e 74 2e 20 20 49 66 20 74 68  al point.  If th
9110: 65 20 3c 69 3e 59 3c 2f 69 3e 20 61 72 67 75 6d  e <i>Y</i> argum
9120: 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64 2c 20  ent is omitted, 
9130: 30 20 69 73 20 0a 61 73 73 75 6d 65 64 2e 3c 2f  0 is .assumed.</
9140: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
9150: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
9160: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73   align="right">s
9170: 6f 75 6e 64 65 78 28 3c 69 3e 58 3c 2f 69 3e 29  oundex(<i>X</i>)
9180: 3c 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e  </td>.<td valign
9190: 3d 22 74 6f 70 22 3e 43 6f 6d 70 75 74 65 20 74  ="top">Compute t
91a0: 68 65 20 73 6f 75 6e 64 65 78 20 65 6e 63 6f 64  he soundex encod
91b0: 69 6e 67 20 6f 66 20 74 68 65 20 73 74 72 69 6e  ing of the strin
91c0: 67 20 3c 69 3e 58 3c 2f 69 3e 2e 0a 54 68 65 20  g <i>X</i>..The 
91d0: 73 74 72 69 6e 67 20 22 3f 30 30 30 22 20 69 73  string "?000" is
91e0: 20 72 65 74 75 72 6e 65 64 20 69 66 20 74 68 65   returned if the
91f0: 20 61 72 67 75 6d 65 6e 74 20 69 73 20 4e 55 4c   argument is NUL
9200: 4c 2e 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e  L..This function
9210: 20 69 73 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d   is omitted from
9220: 20 53 51 4c 69 74 65 20 62 79 20 64 65 66 61 75   SQLite by defau
9230: 6c 74 2e 0a 49 74 20 69 73 20 6f 6e 6c 79 20 61  lt..It is only a
9240: 76 61 69 6c 61 62 6c 65 20 74 68 65 20 2d 44 53  vailable the -DS
9250: 51 4c 49 54 45 5f 53 4f 55 4e 44 45 58 3d 31 20  QLITE_SOUNDEX=1 
9260: 63 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6f 6e 0a  compiler option.
9270: 69 73 20 75 73 65 64 20 77 68 65 6e 20 53 51 4c  is used when SQL
9280: 69 74 65 20 69 73 20 62 75 69 6c 74 2e 3c 2f 74  ite is built.</t
9290: 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c  d>.</tr>..<tr>.<
92a0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
92b0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 73 71  align="right">sq
92c0: 6c 69 74 65 5f 76 65 72 73 69 6f 6e 28 2a 29 3c  lite_version(*)<
92d0: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
92e0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
92f0: 20 76 65 72 73 69 6f 6e 20 73 74 72 69 6e 67 20   version string 
9300: 66 6f 72 20 74 68 65 20 53 51 4c 69 74 65 20 6c  for the SQLite l
9310: 69 62 72 61 72 79 0a 74 68 61 74 20 69 73 20 72  ibrary.that is r
9320: 75 6e 6e 69 6e 67 2e 20 20 45 78 61 6d 70 6c 65  unning.  Example
9330: 3a 20 20 22 32 2e 38 2e 30 22 3c 2f 74 64 3e 0a  :  "2.8.0"</td>.
9340: 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20  </tr>..<tr>.<td 
9350: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
9360: 67 6e 3d 22 72 69 67 68 74 22 3e 73 75 62 73 74  gn="right">subst
9370: 72 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c  r(<i>X</i>,<i>Y<
9380: 2f 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 3c 2f 74  /i>,<i>Z</i>)</t
9390: 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  d>.<td valign="t
93a0: 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 73 75 62  op">Return a sub
93b0: 73 74 72 69 6e 67 20 6f 66 20 69 6e 70 75 74 20  string of input 
93c0: 73 74 72 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20  string <i>X</i> 
93d0: 74 68 61 74 20 62 65 67 69 6e 73 0a 77 69 74 68  that begins.with
93e0: 20 74 68 65 20 3c 69 3e 59 3c 2f 69 3e 2d 74 68   the <i>Y</i>-th
93f0: 20 63 68 61 72 61 63 74 65 72 20 61 6e 64 20 77   character and w
9400: 68 69 63 68 20 69 73 20 3c 69 3e 5a 3c 2f 69 3e  hich is <i>Z</i>
9410: 20 63 68 61 72 61 63 74 65 72 73 20 6c 6f 6e 67   characters long
9420: 2e 0a 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20  ..The left-most 
9430: 63 68 61 72 61 63 74 65 72 20 6f 66 20 3c 69 3e  character of <i>
9440: 58 3c 2f 69 3e 20 69 73 20 6e 75 6d 62 65 72 20  X</i> is number 
9450: 31 2e 20 20 49 66 20 3c 69 3e 59 3c 2f 69 3e 20  1.  If <i>Y</i> 
9460: 69 73 20 6e 65 67 61 74 69 76 65 0a 74 68 65 20  is negative.the 
9470: 74 68 65 20 66 69 72 73 74 20 63 68 61 72 61 63  the first charac
9480: 74 65 72 20 6f 66 20 74 68 65 20 73 75 62 73 74  ter of the subst
9490: 72 69 6e 67 20 69 73 20 66 6f 75 6e 64 20 62 79  ring is found by
94a0: 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f 6d 20 74   counting from t
94b0: 68 65 0a 72 69 67 68 74 20 72 61 74 68 65 72 20  he.right rather 
94c0: 74 68 61 6e 20 74 68 65 20 6c 65 66 74 2e 20 20  than the left.  
94d0: 49 66 20 53 51 4c 69 74 65 20 69 73 20 63 6f 6e  If SQLite is con
94e0: 66 69 67 75 72 65 64 20 74 6f 20 73 75 70 70 6f  figured to suppo
94f0: 72 74 20 55 54 46 2d 38 2c 0a 74 68 65 6e 20 63  rt UTF-8,.then c
9500: 68 61 72 61 63 74 65 72 73 20 69 6e 64 69 63 65  haracters indice
9510: 73 20 72 65 66 65 72 20 74 6f 20 61 63 74 75 61  s refer to actua
9520: 6c 20 55 54 46 2d 38 20 63 68 61 72 61 63 74 65  l UTF-8 characte
9530: 72 73 2c 20 6e 6f 74 20 62 79 74 65 73 2e 3c 2f  rs, not bytes.</
9540: 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e 0a  td>.</tr>..<tr>.
9550: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
9560: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e 74   align="right">t
9570: 79 70 65 6f 66 28 3c 69 3e 58 3c 2f 69 3e 29 3c  ypeof(<i>X</i>)<
9580: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
9590: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 74 68 65  "top">Return the
95a0: 20 74 79 70 65 20 6f 66 20 74 68 65 20 65 78 70   type of the exp
95b0: 72 65 73 73 69 6f 6e 20 3c 69 3e 58 3c 2f 69 3e  ression <i>X</i>
95c0: 2e 20 20 54 68 65 20 6f 6e 6c 79 20 0a 72 65 74  .  The only .ret
95d0: 75 72 6e 20 76 61 6c 75 65 73 20 61 72 65 20 22  urn values are "
95e0: 6e 75 6d 65 72 69 63 22 20 61 6e 64 20 22 74 65  numeric" and "te
95f0: 78 74 22 2e 20 20 53 51 4c 69 74 65 27 73 20 74  xt".  SQLite's t
9600: 79 70 65 20 68 61 6e 64 6c 69 6e 67 20 69 73 20  ype handling is 
9610: 0a 65 78 70 6c 61 69 6e 65 64 20 69 6e 20 3c 61  .explained in <a
9620: 20 68 72 65 66 3d 22 64 61 74 61 74 79 70 65 73   href="datatypes
9630: 2e 68 74 6d 6c 22 3e 44 61 74 61 74 79 70 65 73  .html">Datatypes
9640: 20 69 6e 20 53 51 4c 69 74 65 3c 2f 61 3e 2e 3c   in SQLite</a>.<
9650: 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 0a 3c 74 72 3e  /td>.</tr>..<tr>
9660: 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  .<td valign="top
9670: 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 3e  " align="right">
9680: 75 70 70 65 72 28 3c 69 3e 58 3c 2f 69 3e 29 3c  upper(<i>X</i>)<
9690: 2f 74 64 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d  /td>.<td valign=
96a0: 22 74 6f 70 22 3e 52 65 74 75 72 6e 20 61 20 63  "top">Return a c
96b0: 6f 70 79 20 6f 66 20 69 6e 70 75 74 20 73 74 72  opy of input str
96c0: 69 6e 67 20 3c 69 3e 58 3c 2f 69 3e 20 63 6f 6e  ing <i>X</i> con
96d0: 76 65 72 74 65 64 20 74 6f 20 61 6c 6c 0a 75 70  verted to all.up
96e0: 70 65 72 2d 63 61 73 65 20 6c 65 74 74 65 72 73  per-case letters
96f0: 2e 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74  .  The implement
9700: 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 66 75  ation of this fu
9710: 6e 63 74 69 6f 6e 20 75 73 65 73 20 74 68 65 20  nction uses the 
9720: 43 20 6c 69 62 72 61 72 79 0a 72 6f 75 74 69 6e  C library.routin
9730: 65 20 3c 62 3e 74 6f 75 70 70 65 72 28 29 3c 2f  e <b>toupper()</
9740: 62 3e 20 77 68 69 63 68 20 6d 65 61 6e 73 20 69  b> which means i
9750: 74 20 6d 61 79 20 6e 6f 74 20 77 6f 72 6b 20 63  t may not work c
9760: 6f 72 72 65 63 74 6c 79 20 6f 6e 20 0a 55 54 46  orrectly on .UTF
9770: 2d 38 20 73 74 72 69 6e 67 73 2e 3c 2f 74 64 3e  -8 strings.</td>
9780: 0a 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a  .</tr>.</table>.
9790: 0a 3c 70 3e 0a 54 68 65 20 66 6f 6c 6c 6f 77 69  .<p>.The followi
97a0: 6e 67 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  ng aggregate fun
97b0: 63 74 69 6f 6e 73 20 61 72 65 20 61 76 61 69 6c  ctions are avail
97c0: 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74 2e  able by default.
97d0: 20 20 41 64 64 69 74 69 6f 6e 61 6c 0a 61 67 67    Additional.agg
97e0: 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e 73  regate functions
97f0: 20 77 72 69 74 74 65 6e 20 69 6e 20 43 20 6d 61   written in C ma
9800: 79 20 62 65 20 61 64 64 65 64 20 75 73 69 6e 67  y be added using
9810: 20 74 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 63   the .<a href="c
9820: 5f 69 6e 74 65 72 66 61 63 65 2e 68 74 6d 6c 23  _interface.html#
9830: 63 66 75 6e 63 22 3e 73 71 6c 69 74 65 5f 63 72  cfunc">sqlite_cr
9840: 65 61 74 65 5f 61 67 67 72 65 67 61 74 65 28 29  eate_aggregate()
9850: 3c 2f 61 3e 20 41 50 49 2e 3c 2f 70 3e 0a 0a 3c  </a> API.</p>..<
9860: 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 30 20 63  table border=0 c
9870: 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 3e 0a 3c  ellpadding=10>.<
9880: 74 72 3e 0a 3c 74 64 20 76 61 6c 69 67 6e 3d 22  tr>.<td valign="
9890: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
98a0: 74 22 20 77 69 64 74 68 3d 31 32 30 3e 61 76 67  t" width=120>avg
98b0: 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a  (<i>X</i>)</td>.
98c0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
98d0: 3e 52 65 74 75 72 6e 20 74 68 65 20 61 76 65 72  >Return the aver
98e0: 61 67 65 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c  age value of all
98f0: 20 3c 69 3e 58 3c 2f 69 3e 20 77 69 74 68 69 6e   <i>X</i> within
9900: 20 61 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c   a group.</td>.<
9910: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
9920: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
9930: 6e 3d 22 72 69 67 68 74 22 3e 63 6f 75 6e 74 28  n="right">count(
9940: 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 3e 63 6f 75  <i>X</i>)<br>cou
9950: 6e 74 28 2a 29 3c 2f 74 64 3e 0a 3c 74 64 20 76  nt(*)</td>.<td v
9960: 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 54 68 65 20  align="top">The 
9970: 66 69 72 73 74 20 66 6f 72 6d 20 72 65 74 75 72  first form retur
9980: 6e 20 61 20 63 6f 75 6e 74 20 6f 66 20 74 68 65  n a count of the
9990: 20 6e 75 6d 62 65 72 20 6f 66 20 74 69 6d 65 73   number of times
99a0: 0a 74 68 61 74 20 3c 69 3e 58 3c 2f 69 3e 20 69  .that <i>X</i> i
99b0: 73 20 6e 6f 74 20 4e 55 4c 4c 20 69 6e 20 61 20  s not NULL in a 
99c0: 67 72 6f 75 70 2e 20 20 54 68 65 20 73 65 63 6f  group.  The seco
99d0: 6e 64 20 66 6f 72 6d 20 28 77 69 74 68 20 6e 6f  nd form (with no
99e0: 20 61 72 67 75 6d 65 6e 74 29 0a 72 65 74 75 72   argument).retur
99f0: 6e 73 20 74 68 65 20 74 6f 74 61 6c 20 6e 75 6d  ns the total num
9a00: 62 65 72 20 6f 66 20 72 6f 77 73 20 69 6e 20 74  ber of rows in t
9a10: 68 65 20 67 72 6f 75 70 2e 3c 2f 74 64 3e 0a 3c  he group.</td>.<
9a20: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
9a30: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
9a40: 6e 3d 22 72 69 67 68 74 22 3e 6d 61 78 28 3c 69  n="right">max(<i
9a50: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
9a60: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
9a70: 74 75 72 6e 20 74 68 65 20 6d 61 78 69 6d 75 6d  turn the maximum
9a80: 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61   value of all va
9a90: 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
9aa0: 70 2e 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72  p..The usual sor
9ab0: 74 20 6f 72 64 65 72 20 69 73 20 75 73 65 64 20  t order is used 
9ac0: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
9ad0: 20 6d 61 78 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c   maximum.</td>.<
9ae0: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
9af0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
9b00: 6e 3d 22 72 69 67 68 74 22 3e 6d 69 6e 28 3c 69  n="right">min(<i
9b10: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
9b20: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
9b30: 74 75 72 6e 20 74 68 65 20 6d 69 6e 69 6d 75 6d  turn the minimum
9b40: 20 76 61 6c 75 65 20 6f 66 20 61 6c 6c 20 76 61   value of all va
9b50: 6c 75 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75  lues in the grou
9b60: 70 2e 0a 54 68 65 20 75 73 75 61 6c 20 73 6f 72  p..The usual sor
9b70: 74 20 6f 72 64 65 72 20 69 73 20 75 73 65 64 20  t order is used 
9b80: 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65  to determine the
9b90: 20 6d 69 6e 69 6d 75 6d 2e 3c 2f 74 64 3e 0a 3c   minimum.</td>.<
9ba0: 2f 74 72 3e 0a 0a 3c 74 72 3e 0a 3c 74 64 20 76  /tr>..<tr>.<td v
9bb0: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
9bc0: 6e 3d 22 72 69 67 68 74 22 3e 73 75 6d 28 3c 69  n="right">sum(<i
9bd0: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 0a 3c 74 64  >X</i>)</td>.<td
9be0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 52 65   valign="top">Re
9bf0: 74 75 72 6e 20 74 68 65 20 6e 75 6d 65 72 69 63  turn the numeric
9c00: 20 73 75 6d 20 6f 66 20 61 6c 6c 20 76 61 6c 75   sum of all valu
9c10: 65 73 20 69 6e 20 74 68 65 20 67 72 6f 75 70 2e  es in the group.
9c20: 3c 2f 74 64 3e 0a 3c 2f 74 72 3e 0a 3c 2f 74 61  </td>.</tr>.</ta
9c30: 62 6c 65 3e 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e  ble>.}...Section
9c40: 20 49 4e 53 45 52 54 20 69 6e 73 65 72 74 0a 0a   INSERT insert..
9c50: 53 79 6e 74 61 78 20 7b 73 71 6c 2d 73 74 61 74  Syntax {sql-stat
9c60: 65 6d 65 6e 74 7d 20 7b 0a 49 4e 53 45 52 54 20  ement} {.INSERT 
9c70: 5b 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c  [OR <conflict-al
9c80: 67 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 5b  gorithm>] INTO [
9c90: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
9ca0: 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  .] <table-name> 
9cb0: 5b 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29  [(<column-list>)
9cc0: 5d 20 56 41 4c 55 45 53 28 3c 76 61 6c 75 65 2d  ] VALUES(<value-
9cd0: 6c 69 73 74 3e 29 20 7c 0a 49 4e 53 45 52 54 20  list>) |.INSERT 
9ce0: 5b 4f 52 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c  [OR <conflict-al
9cf0: 67 6f 72 69 74 68 6d 3e 5d 20 49 4e 54 4f 20 5b  gorithm>] INTO [
9d00: 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20  <database-name> 
9d10: 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20  .] <table-name> 
9d20: 5b 28 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 29  [(<column-list>)
9d30: 5d 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65 6d  ] <select-statem
9d40: 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c  ent>.}..puts {.<
9d50: 70 3e 54 68 65 20 49 4e 53 45 52 54 20 73 74 61  p>The INSERT sta
9d60: 74 65 6d 65 6e 74 20 63 6f 6d 65 73 20 69 6e 20  tement comes in 
9d70: 74 77 6f 20 62 61 73 69 63 20 66 6f 72 6d 73 2e  two basic forms.
9d80: 20 20 54 68 65 20 66 69 72 73 74 20 66 6f 72 6d    The first form
9d90: 0a 28 77 69 74 68 20 74 68 65 20 22 56 41 4c 55  .(with the "VALU
9da0: 45 53 22 20 6b 65 79 77 6f 72 64 29 20 63 72 65  ES" keyword) cre
9db0: 61 74 65 73 20 61 20 73 69 6e 67 6c 65 20 6e 65  ates a single ne
9dc0: 77 20 72 6f 77 20 69 6e 20 61 6e 20 65 78 69 73  w row in an exis
9dd0: 74 69 6e 67 20 74 61 62 6c 65 2e 0a 49 66 20 6e  ting table..If n
9de0: 6f 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 20 69 73  o column-list is
9df0: 20 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20   specified then 
9e00: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 76 61  the number of va
9e10: 6c 75 65 73 20 6d 75 73 74 0a 62 65 20 74 68 65  lues must.be the
9e20: 20 73 61 6d 65 20 61 73 20 74 68 65 20 6e 75 6d   same as the num
9e30: 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69  ber of columns i
9e40: 6e 20 74 68 65 20 74 61 62 6c 65 2e 20 20 49 66  n the table.  If
9e50: 20 61 20 63 6f 6c 75 6d 6e 2d 6c 69 73 74 0a 69   a column-list.i
9e60: 73 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65  s specified, the
9e70: 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  n the number of 
9e80: 76 61 6c 75 65 73 20 6d 75 73 74 20 6d 61 74 63  values must matc
9e90: 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 0a  h the number of.
9ea0: 73 70 65 63 69 66 69 65 64 20 63 6f 6c 75 6d 6e  specified column
9eb0: 73 2e 20 20 43 6f 6c 75 6d 6e 73 20 6f 66 20 74  s.  Columns of t
9ec0: 68 65 20 74 61 62 6c 65 20 74 68 61 74 20 64 6f  he table that do
9ed0: 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 74   not appear in t
9ee0: 68 65 0a 63 6f 6c 75 6d 6e 20 6c 69 73 74 20 61  he.column list a
9ef0: 72 65 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74  re filled with t
9f00: 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65  he default value
9f10: 2c 20 6f 72 20 77 69 74 68 20 4e 55 4c 4c 20 69  , or with NULL i
9f20: 66 20 6e 6f 74 0a 64 65 66 61 75 6c 74 20 76 61  f not.default va
9f30: 6c 75 65 20 69 73 20 73 70 65 63 69 66 69 65 64  lue is specified
9f40: 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73  ..</p>..<p>The s
9f50: 65 63 6f 6e 64 20 66 6f 72 6d 20 6f 66 20 74 68  econd form of th
9f60: 65 20 49 4e 53 45 52 54 20 73 74 61 74 65 6d 65  e INSERT stateme
9f70: 6e 74 20 74 61 6b 65 73 20 69 74 20 64 61 74 61  nt takes it data
9f80: 20 66 72 6f 6d 20 61 0a 53 45 4c 45 43 54 20 73   from a.SELECT s
9f90: 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 65 20 6e  tatement.  The n
9fa0: 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75 6d 6e 73  umber of columns
9fb0: 20 69 6e 20 74 68 65 20 72 65 73 75 6c 74 20 6f   in the result o
9fc0: 66 20 74 68 65 0a 53 45 4c 45 43 54 20 6d 75 73  f the.SELECT mus
9fd0: 74 20 65 78 61 63 74 6c 79 20 6d 61 74 63 68 20  t exactly match 
9fe0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f  the number of co
9ff0: 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 74 61 62  lumns in the tab
a000: 6c 65 20 69 66 0a 6e 6f 20 63 6f 6c 75 6d 6e 20  le if.no column 
a010: 6c 69 73 74 20 69 73 20 73 70 65 63 69 66 69 65  list is specifie
a020: 64 2c 20 6f 72 20 69 74 20 6d 75 73 74 20 6d 61  d, or it must ma
a030: 74 63 68 20 74 68 65 20 6e 75 6d 62 65 72 20 6f  tch the number o
a040: 66 20 63 6f 6c 75 6d 6e 73 0a 6e 61 6d 65 20 69  f columns.name i
a050: 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6c 69 73  n the column lis
a060: 74 2e 20 20 41 20 6e 65 77 20 65 6e 74 72 79 20  t.  A new entry 
a070: 69 73 20 6d 61 64 65 20 69 6e 20 74 68 65 20 74  is made in the t
a080: 61 62 6c 65 0a 66 6f 72 20 65 76 65 72 79 20 72  able.for every r
a090: 6f 77 20 6f 66 20 74 68 65 20 53 45 4c 45 43 54  ow of the SELECT
a0a0: 20 72 65 73 75 6c 74 2e 20 20 54 68 65 20 53 45   result.  The SE
a0b0: 4c 45 43 54 20 6d 61 79 20 62 65 20 73 69 6d 70  LECT may be simp
a0c0: 6c 65 0a 6f 72 20 63 6f 6d 70 6f 75 6e 64 2e 20  le.or compound. 
a0d0: 20 49 66 20 74 68 65 20 53 45 4c 45 43 54 20 73   If the SELECT s
a0e0: 74 61 74 65 6d 65 6e 74 20 68 61 73 20 61 6e 20  tatement has an 
a0f0: 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65 2c  ORDER BY clause,
a100: 0a 74 68 65 20 4f 52 44 45 52 20 42 59 20 69 73  .the ORDER BY is
a110: 20 69 67 6e 6f 72 65 64 2e 3c 2f 70 3e 0a 0a 3c   ignored.</p>..<
a120: 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63  p>The optional c
a130: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61  onflict-clause a
a140: 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69 66  llows the specif
a150: 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61 6c  ication of an al
a160: 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74 72  ternative.constr
a170: 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65  aint conflict re
a180: 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74  solution algorit
a190: 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e 67  hm to use during
a1a0: 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61 6e   this one comman
a1b0: 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74 69  d..See the secti
a1c0: 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72 65  on titled.<a hre
a1d0: 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f 4e  f="#conflict">ON
a1e0: 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66 6f   CONFLICT</a> fo
a1f0: 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66  r additional inf
a200: 6f 72 6d 61 74 69 6f 6e 2e 0a 46 6f 72 20 63 6f  ormation..For co
a210: 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68  mpatibility with
a220: 20 4d 79 53 51 4c 2c 20 74 68 65 20 70 61 72 73   MySQL, the pars
a230: 65 72 20 61 6c 6c 6f 77 73 20 74 68 65 20 75 73  er allows the us
a240: 65 20 6f 66 20 74 68 65 0a 73 69 6e 67 6c 65 20  e of the.single 
a250: 6b 65 79 77 6f 72 64 20 3c 61 20 68 72 65 66 3d  keyword <a href=
a260: 22 23 72 65 70 6c 61 63 65 22 3e 52 45 50 4c 41  "#replace">REPLA
a270: 43 45 3c 2f 61 3e 20 61 73 20 61 6e 20 61 6c 69  CE</a> as an ali
a280: 61 73 20 66 6f 72 20 22 49 4e 53 45 52 54 20 4f  as for "INSERT O
a290: 52 20 52 45 50 4c 41 43 45 22 2e 0a 3c 2f 70 3e  R REPLACE"..</p>
a2a0: 0a 7d 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 4f 4e  .}...Section {ON
a2b0: 20 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65   CONFLICT clause
a2c0: 7d 20 63 6f 6e 66 6c 69 63 74 0a 0a 53 79 6e 74  } conflict..Synt
a2d0: 61 78 20 7b 63 6f 6e 66 6c 69 63 74 2d 63 6c 61  ax {conflict-cla
a2e0: 75 73 65 7d 20 7b 0a 4f 4e 20 43 4f 4e 46 4c 49  use} {.ON CONFLI
a2f0: 43 54 20 3c 63 6f 6e 66 6c 69 63 74 2d 61 6c 67  CT <conflict-alg
a300: 6f 72 69 74 68 6d 3e 0a 7d 20 7b 63 6f 6e 66 6c  orithm>.} {confl
a310: 69 63 74 2d 61 6c 67 6f 72 69 74 68 6d 7d 20 7b  ict-algorithm} {
a320: 0a 52 4f 4c 4c 42 41 43 4b 20 7c 20 41 42 4f 52  .ROLLBACK | ABOR
a330: 54 20 7c 20 46 41 49 4c 20 7c 20 49 47 4e 4f 52  T | FAIL | IGNOR
a340: 45 20 7c 20 52 45 50 4c 41 43 45 0a 7d 0a 0a 70  E | REPLACE.}..p
a350: 75 74 73 20 7b 0a 3c 70 3e 54 68 65 20 4f 4e 20  uts {.<p>The ON 
a360: 43 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20  CONFLICT clause 
a370: 69 73 20 6e 6f 74 20 61 20 73 65 70 61 72 61 74  is not a separat
a380: 65 20 53 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20  e SQL command.  
a390: 49 74 20 69 73 20 61 0a 6e 6f 6e 2d 73 74 61 6e  It is a.non-stan
a3a0: 64 61 72 64 20 63 6c 61 75 73 65 20 74 68 61 74  dard clause that
a3b0: 20 63 61 6e 20 61 70 70 65 61 72 20 69 6e 20 6d   can appear in m
a3c0: 61 6e 79 20 6f 74 68 65 72 20 53 51 4c 20 63 6f  any other SQL co
a3d0: 6d 6d 61 6e 64 73 2e 0a 49 74 20 69 73 20 67 69  mmands..It is gi
a3e0: 76 65 6e 20 69 74 73 20 6f 77 6e 20 73 65 63 74  ven its own sect
a3f0: 69 6f 6e 20 69 6e 20 74 68 69 73 20 64 6f 63 75  ion in this docu
a400: 6d 65 6e 74 20 62 65 63 61 75 73 65 20 69 74 20  ment because it 
a410: 69 73 20 6e 6f 74 0a 70 61 72 74 20 6f 66 20 73  is not.part of s
a420: 74 61 6e 64 61 72 64 20 53 51 4c 20 61 6e 64 20  tandard SQL and 
a430: 74 68 65 72 65 66 6f 72 65 20 6d 69 67 68 74 20  therefore might 
a440: 6e 6f 74 20 62 65 20 66 61 6d 69 6c 69 61 72 2e  not be familiar.
a450: 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 73 79 6e  </p>..<p>The syn
a460: 74 61 78 20 66 6f 72 20 74 68 65 20 4f 4e 20 43  tax for the ON C
a470: 4f 4e 46 4c 49 43 54 20 63 6c 61 75 73 65 20 69  ONFLICT clause i
a480: 73 20 61 73 20 73 68 6f 77 6e 20 61 62 6f 76 65  s as shown above
a490: 20 66 6f 72 0a 74 68 65 20 43 52 45 41 54 45 20   for.the CREATE 
a4a0: 54 41 42 4c 45 2c 20 43 52 45 41 54 45 20 49 4e  TABLE, CREATE IN
a4b0: 44 45 58 2c 20 61 6e 64 20 42 45 47 49 4e 20 54  DEX, and BEGIN T
a4c0: 52 41 4e 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61  RANSACTION comma
a4d0: 6e 64 73 2e 0a 46 6f 72 20 74 68 65 20 43 4f 50  nds..For the COP
a4e0: 59 2c 20 49 4e 53 45 52 54 2c 20 61 6e 64 20 55  Y, INSERT, and U
a4f0: 50 44 41 54 45 20 63 6f 6d 6d 61 6e 64 73 2c 20  PDATE commands, 
a500: 74 68 65 20 6b 65 79 77 6f 72 64 73 0a 22 4f 4e  the keywords."ON
a510: 20 43 4f 4e 46 4c 49 43 54 22 20 61 72 65 20 72   CONFLICT" are r
a520: 65 70 6c 61 63 65 64 20 62 79 20 22 4f 52 22 2c  eplaced by "OR",
a530: 20 74 6f 20 6d 61 6b 65 20 74 68 65 20 73 79 6e   to make the syn
a540: 74 61 78 20 73 65 65 6d 20 6d 6f 72 65 0a 6e 61  tax seem more.na
a550: 74 75 72 61 6c 2e 20 20 42 75 74 20 74 68 65 20  tural.  But the 
a560: 6d 65 61 6e 69 6e 67 20 6f 66 20 74 68 65 20 63  meaning of the c
a570: 6c 61 75 73 65 20 69 73 20 74 68 65 20 73 61 6d  lause is the sam
a580: 65 20 65 69 74 68 65 72 20 77 61 79 2e 3c 2f 70  e either way.</p
a590: 3e 0a 0a 3c 70 3e 54 68 65 20 4f 4e 20 43 4f 4e  >..<p>The ON CON
a5a0: 46 4c 49 43 54 20 63 6c 61 75 73 65 20 73 70 65  FLICT clause spe
a5b0: 63 69 66 69 65 73 20 61 6e 20 61 6c 67 6f 72 69  cifies an algori
a5c0: 74 68 6d 20 75 73 65 64 20 74 6f 20 72 65 73 6f  thm used to reso
a5d0: 6c 76 65 0a 63 6f 6e 73 74 72 61 69 6e 74 20 63  lve.constraint c
a5e0: 6f 6e 66 6c 69 63 74 73 2e 20 20 54 68 65 72 65  onflicts.  There
a5f0: 20 61 72 65 20 66 69 76 65 20 63 68 6f 69 63 65   are five choice
a600: 73 3a 20 52 4f 4c 4c 42 41 43 4b 2c 20 41 42 4f  s: ROLLBACK, ABO
a610: 52 54 2c 0a 46 41 49 4c 2c 20 49 47 4e 4f 52 45  RT,.FAIL, IGNORE
a620: 2c 20 61 6e 64 20 52 45 50 4c 41 43 45 2e 20 54  , and REPLACE. T
a630: 68 65 20 64 65 66 61 75 6c 74 20 61 6c 67 6f 72  he default algor
a640: 69 74 68 6d 20 69 73 20 41 42 4f 52 54 2e 20 20  ithm is ABORT.  
a650: 54 68 69 73 0a 69 73 20 77 68 61 74 20 74 68 65  This.is what the
a660: 79 20 6d 65 61 6e 3a 3c 2f 70 3e 0a 0a 3c 64 6c  y mean:</p>..<dl
a670: 3e 0a 3c 64 74 3e 3c 62 3e 52 4f 4c 4c 42 41 43  >.<dt><b>ROLLBAC
a680: 4b 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c  K</b></dt>.<dd><
a690: 70 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61  p>When a constra
a6a0: 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63  int violation oc
a6b0: 63 75 72 73 2c 20 61 6e 20 69 6d 6d 65 64 69 61  curs, an immedia
a6c0: 74 65 20 52 4f 4c 4c 42 41 43 4b 0a 6f 63 63 75  te ROLLBACK.occu
a6d0: 72 73 2c 20 74 68 75 73 20 65 6e 64 69 6e 67 20  rs, thus ending 
a6e0: 74 68 65 20 63 75 72 72 65 6e 74 20 74 72 61 6e  the current tran
a6f0: 73 61 63 74 69 6f 6e 2c 20 61 6e 64 20 74 68 65  saction, and the
a700: 20 63 6f 6d 6d 61 6e 64 20 61 62 6f 72 74 73 0a   command aborts.
a710: 77 69 74 68 20 61 20 72 65 74 75 72 6e 20 63 6f  with a return co
a720: 64 65 20 6f 66 20 53 51 4c 49 54 45 5f 43 4f 4e  de of SQLITE_CON
a730: 53 54 52 41 49 4e 54 2e 20 20 49 66 20 6e 6f 20  STRAINT.  If no 
a740: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 0a 61  transaction is.a
a750: 63 74 69 76 65 20 28 6f 74 68 65 72 20 74 68 61  ctive (other tha
a760: 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 74 72  n the implied tr
a770: 61 6e 73 61 63 74 69 6f 6e 20 74 68 61 74 20 69  ansaction that i
a780: 73 20 63 72 65 61 74 65 64 20 6f 6e 20 65 76 65  s created on eve
a790: 72 79 0a 63 6f 6d 6d 61 6e 64 29 20 74 68 65 6e  ry.command) then
a7a0: 20 74 68 69 73 20 61 6c 67 6f 72 69 74 68 6d 20   this algorithm 
a7b0: 77 6f 72 6b 73 20 74 68 65 20 73 61 6d 65 20 61  works the same a
a7c0: 73 20 41 42 4f 52 54 2e 3c 2f 70 3e 3c 2f 64 64  s ABORT.</p></dd
a7d0: 3e 0a 0a 3c 64 74 3e 3c 62 3e 41 42 4f 52 54 3c  >..<dt><b>ABORT<
a7e0: 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e  /b></dt>.<dd><p>
a7f0: 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e  When a constrain
a800: 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75  t violation occu
a810: 72 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20  rs, the command 
a820: 62 61 63 6b 73 20 6f 75 74 0a 61 6e 79 20 70 72  backs out.any pr
a830: 69 6f 72 20 63 68 61 6e 67 65 73 20 69 74 20 6d  ior changes it m
a840: 69 67 68 74 20 68 61 76 65 20 6d 61 64 65 20 61  ight have made a
a850: 6e 64 20 61 62 6f 72 74 73 20 77 69 74 68 20 61  nd aborts with a
a860: 20 72 65 74 75 72 6e 20 63 6f 64 65 0a 6f 66 20   return code.of 
a870: 53 51 4c 49 54 45 5f 43 4f 4e 53 54 52 41 49 4e  SQLITE_CONSTRAIN
a880: 54 2e 20 20 42 75 74 20 6e 6f 20 52 4f 4c 4c 42  T.  But no ROLLB
a890: 41 43 4b 20 69 73 20 65 78 65 63 75 74 65 64 20  ACK is executed 
a8a0: 73 6f 20 63 68 61 6e 67 65 73 0a 66 72 6f 6d 20  so changes.from 
a8b0: 70 72 69 6f 72 20 63 6f 6d 6d 61 6e 64 73 20 77  prior commands w
a8c0: 69 74 68 69 6e 20 74 68 65 20 73 61 6d 65 20 74  ithin the same t
a8d0: 72 61 6e 73 61 63 74 69 6f 6e 0a 61 72 65 20 70  ransaction.are p
a8e0: 72 65 73 65 72 76 65 64 2e 20 20 54 68 69 73 20  reserved.  This 
a8f0: 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 62  is the default b
a900: 65 68 61 76 69 6f 72 2e 3c 2f 70 3e 3c 2f 64 64  ehavior.</p></dd
a910: 3e 0a 0a 3c 64 74 3e 3c 62 3e 46 41 49 4c 3c 2f  >..<dt><b>FAIL</
a920: 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57  b></dt>.<dd><p>W
a930: 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69 6e 74  hen a constraint
a940: 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63 75 72   violation occur
a950: 73 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 61  s, the command a
a960: 62 6f 72 74 73 20 77 69 74 68 20 61 0a 72 65 74  borts with a.ret
a970: 75 72 6e 20 63 6f 64 65 20 53 51 4c 49 54 45 5f  urn code SQLITE_
a980: 43 4f 4e 53 54 52 41 49 4e 54 2e 20 20 42 75 74  CONSTRAINT.  But
a990: 20 61 6e 79 20 63 68 61 6e 67 65 73 20 74 6f 20   any changes to 
a9a0: 74 68 65 20 64 61 74 61 62 61 73 65 20 74 68 61  the database tha
a9b0: 74 0a 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6d 61  t.the command ma
a9c0: 64 65 20 70 72 69 6f 72 20 74 6f 20 65 6e 63 6f  de prior to enco
a9d0: 75 6e 74 65 72 69 6e 67 20 74 68 65 20 63 6f 6e  untering the con
a9e0: 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
a9f0: 6e 0a 61 72 65 20 70 72 65 73 65 72 76 65 64 20  n.are preserved 
aa00: 61 6e 64 20 61 72 65 20 6e 6f 74 20 62 61 63 6b  and are not back
aa10: 65 64 20 6f 75 74 2e 20 20 46 6f 72 20 65 78 61  ed out.  For exa
aa20: 6d 70 6c 65 2c 20 69 66 20 61 6e 20 55 50 44 41  mple, if an UPDA
aa30: 54 45 0a 73 74 61 74 65 6d 65 6e 74 20 65 6e 63  TE.statement enc
aa40: 6f 75 6e 74 65 72 65 64 20 61 20 63 6f 6e 73 74  ountered a const
aa50: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
aa60: 6f 6e 20 74 68 65 20 31 30 30 74 68 20 72 6f 77  on the 100th row
aa70: 20 74 68 61 74 0a 69 74 20 61 74 74 65 6d 70 74   that.it attempt
aa80: 73 20 74 6f 20 75 70 64 61 74 65 2c 20 74 68 65  s to update, the
aa90: 6e 20 74 68 65 20 66 69 72 73 74 20 39 39 20 72  n the first 99 r
aaa0: 6f 77 20 63 68 61 6e 67 65 73 20 61 72 65 20 70  ow changes are p
aab0: 72 65 73 65 72 76 65 64 0a 62 75 74 20 63 68 61  reserved.but cha
aac0: 6e 67 65 73 20 74 6f 20 72 6f 77 73 20 31 30 30  nges to rows 100
aad0: 20 61 6e 64 20 62 65 79 6f 6e 64 20 6e 65 76 65   and beyond neve
aae0: 72 20 6f 63 63 75 72 2e 3c 2f 70 3e 3c 2f 64 64  r occur.</p></dd
aaf0: 3e 0a 0a 3c 64 74 3e 3c 62 3e 49 47 4e 4f 52 45  >..<dt><b>IGNORE
ab00: 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70  </b></dt>.<dd><p
ab10: 3e 57 68 65 6e 20 61 20 63 6f 6e 73 74 72 61 69  >When a constrai
ab20: 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 63 63  nt violation occ
ab30: 75 72 73 2c 20 74 68 65 20 6f 6e 65 20 72 6f 77  urs, the one row
ab40: 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 0a 74   that contains.t
ab50: 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69  he constraint vi
ab60: 6f 6c 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 69  olation is not i
ab70: 6e 73 65 72 74 65 64 20 6f 72 20 63 68 61 6e 67  nserted or chang
ab80: 65 64 2e 20 20 42 75 74 20 74 68 65 20 63 6f 6d  ed.  But the com
ab90: 6d 61 6e 64 0a 63 6f 6e 74 69 6e 75 65 73 20 65  mand.continues e
aba0: 78 65 63 75 74 69 6e 67 20 6e 6f 72 6d 61 6c 6c  xecuting normall
abb0: 79 2e 20 20 4f 74 68 65 72 20 72 6f 77 73 20 62  y.  Other rows b
abc0: 65 66 6f 72 65 20 61 6e 64 20 61 66 74 65 72 20  efore and after 
abd0: 74 68 65 20 72 6f 77 20 74 68 61 74 0a 63 6f 6e  the row that.con
abe0: 74 61 69 6e 65 64 20 74 68 65 20 63 6f 6e 73 74  tained the const
abf0: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
ac00: 63 6f 6e 74 69 6e 75 65 20 74 6f 20 62 65 20 69  continue to be i
ac10: 6e 73 65 72 74 65 64 20 6f 72 20 75 70 64 61 74  nserted or updat
ac20: 65 64 0a 6e 6f 72 6d 61 6c 6c 79 2e 20 20 4e 6f  ed.normally.  No
ac30: 20 65 72 72 6f 72 20 69 73 20 72 65 74 75 72 6e   error is return
ac40: 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 0a 3c 64  ed.</p></dd>..<d
ac50: 74 3e 3c 62 3e 52 45 50 4c 41 43 45 3c 2f 62 3e  t><b>REPLACE</b>
ac60: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 57 68 65  </dt>.<dd><p>Whe
ac70: 6e 20 61 20 55 4e 49 51 55 45 20 63 6f 6e 73 74  n a UNIQUE const
ac80: 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f 6e 20  raint violation 
ac90: 6f 63 63 75 72 73 2c 20 74 68 65 20 70 72 65 2d  occurs, the pre-
aca0: 65 78 69 73 74 69 6e 67 20 72 6f 77 73 0a 74 68  existing rows.th
acb0: 61 74 20 61 72 65 20 63 61 75 73 69 6e 67 20 74  at are causing t
acc0: 68 65 20 63 6f 6e 73 74 72 61 69 6e 74 20 76 69  he constraint vi
acd0: 6f 6c 61 74 69 6f 6e 20 61 72 65 20 72 65 6d 6f  olation are remo
ace0: 76 65 64 20 70 72 69 6f 72 20 74 6f 20 69 6e 73  ved prior to ins
acf0: 65 72 74 69 6e 67 0a 6f 72 20 75 70 64 61 74 69  erting.or updati
ad00: 6e 67 20 74 68 65 20 63 75 72 72 65 6e 74 20 72  ng the current r
ad10: 6f 77 2e 20 20 54 68 75 73 20 74 68 65 20 69 6e  ow.  Thus the in
ad20: 73 65 72 74 20 6f 72 20 75 70 64 61 74 65 20 61  sert or update a
ad30: 6c 77 61 79 73 20 6f 63 63 75 72 73 2e 0a 54 68  lways occurs..Th
ad40: 65 20 63 6f 6d 6d 61 6e 64 20 63 6f 6e 74 69 6e  e command contin
ad50: 75 65 73 20 65 78 65 63 75 74 69 6e 67 20 6e 6f  ues executing no
ad60: 72 6d 61 6c 6c 79 2e 20 20 4e 6f 20 65 72 72 6f  rmally.  No erro
ad70: 72 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 49  r is returned..I
ad80: 66 20 61 20 4e 4f 54 20 4e 55 4c 4c 20 63 6f 6e  f a NOT NULL con
ad90: 73 74 72 61 69 6e 74 20 76 69 6f 6c 61 74 69 6f  straint violatio
ada0: 6e 20 6f 63 63 75 72 73 2c 20 74 68 65 20 4e 55  n occurs, the NU
adb0: 4c 4c 20 76 61 6c 75 65 20 69 73 20 72 65 70 6c  LL value is repl
adc0: 61 63 65 64 0a 62 79 20 74 68 65 20 64 65 66 61  aced.by the defa
add0: 75 6c 74 20 76 61 6c 75 65 20 66 6f 72 20 74 68  ult value for th
ade0: 61 74 20 63 6f 6c 75 6d 6e 2e 20 20 49 66 20 74  at column.  If t
adf0: 68 65 20 63 6f 6c 75 6d 6e 20 68 61 73 20 6e 6f  he column has no
ae00: 20 64 65 66 61 75 6c 74 0a 76 61 6c 75 65 2c 20   default.value, 
ae10: 74 68 65 6e 20 74 68 65 20 41 42 4f 52 54 20 61  then the ABORT a
ae20: 6c 67 6f 72 69 74 68 6d 20 69 73 20 75 73 65 64  lgorithm is used
ae30: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74  .</p>..<p>When t
ae40: 68 69 73 20 63 6f 6e 66 6c 69 63 74 20 72 65 73  his conflict res
ae50: 6f 6c 75 74 69 6f 6e 20 73 74 72 61 74 65 67 79  olution strategy
ae60: 20 64 65 6c 65 74 65 73 20 72 6f 77 73 20 69 6e   deletes rows in
ae70: 20 6f 72 64 65 72 20 74 6f 0a 73 74 61 74 69 73   order to.statis
ae80: 66 79 20 61 20 63 6f 6e 73 74 72 61 69 6e 74 2c  fy a constraint,
ae90: 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 69 6e 76   it does not inv
aea0: 6f 6b 65 20 64 65 6c 65 74 65 20 74 72 69 67 67  oke delete trigg
aeb0: 65 72 73 20 6f 6e 20 74 68 6f 73 65 0a 72 6f 77  ers on those.row
aec0: 73 2e 20 20 42 75 74 20 74 68 61 74 20 6d 61 79  s.  But that may
aed0: 20 63 68 61 6e 67 65 20 69 6e 20 61 20 66 75 74   change in a fut
aee0: 75 72 65 20 72 65 6c 65 61 73 65 2e 3c 2f 70 3e  ure release.</p>
aef0: 0a 0a 3c 2f 64 64 3e 0a 3c 2f 64 6c 3e 0a 0a 3c  ..</dd>.</dl>..<
af00: 70 3e 0a 54 68 65 20 63 6f 6e 66 6c 69 63 74 20  p>.The conflict 
af10: 72 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72  resolution algor
af20: 69 74 68 6d 20 63 61 6e 20 62 65 20 73 70 65 63  ithm can be spec
af30: 69 66 69 65 64 20 69 6e 20 74 68 72 65 65 20 70  ified in three p
af40: 6c 61 63 65 73 2c 0a 69 6e 20 6f 72 64 65 72 20  laces,.in order 
af50: 66 72 6f 6d 20 6c 6f 77 65 73 74 20 74 6f 20 68  from lowest to h
af60: 69 67 68 65 73 74 20 70 72 65 63 65 64 65 6e 63  ighest precedenc
af70: 65 3a 0a 3c 2f 70 3e 0a 0a 3c 6f 6c 3e 0a 3c 6c  e:.</p>..<ol>.<l
af80: 69 3e 3c 70 3e 0a 4f 6e 20 69 6e 64 69 76 69 64  i><p>.On individ
af90: 75 61 6c 20 63 6f 6e 73 74 72 61 69 6e 74 73 20  ual constraints 
afa0: 77 69 74 68 69 6e 20 61 20 43 52 45 41 54 45 20  within a CREATE 
afb0: 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54 45 20  TABLE or CREATE 
afc0: 49 4e 44 45 58 0a 73 74 61 74 65 6d 65 6e 74 2e  INDEX.statement.
afd0: 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e  .</p></li>..<li>
afe0: 3c 70 3e 0a 4f 6e 20 61 20 42 45 47 49 4e 20 54  <p>.On a BEGIN T
aff0: 52 41 4e 53 41 43 54 49 4f 4e 20 63 6f 6d 6d 61  RANSACTION comma
b000: 6e 64 2e 0a 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c  nd..</p></li>..<
b010: 6c 69 3e 3c 70 3e 0a 49 6e 20 74 68 65 20 4f 52  li><p>.In the OR
b020: 20 63 6c 61 75 73 65 20 6f 66 20 61 20 43 4f 50   clause of a COP
b030: 59 2c 20 49 4e 53 45 52 54 2c 20 6f 72 20 55 50  Y, INSERT, or UP
b040: 44 41 54 45 20 63 6f 6d 6d 61 6e 64 2e 0a 3c 2f  DATE command..</
b050: 70 3e 3c 2f 6c 69 3e 0a 3c 2f 6f 6c 3e 0a 0a 3c  p></li>.</ol>..<
b060: 70 3e 54 68 65 20 61 6c 67 6f 72 69 74 68 6d 20  p>The algorithm 
b070: 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65  specified in the
b080: 20 4f 52 20 63 6c 61 75 73 65 20 6f 66 20 61 20   OR clause of a 
b090: 43 4f 50 59 2c 20 49 4e 53 45 52 54 2c 20 6f 72  COPY, INSERT, or
b0a0: 20 55 50 44 41 54 45 0a 6f 76 65 72 72 69 64 65   UPDATE.override
b0b0: 73 20 61 6e 79 20 61 6c 67 6f 72 69 74 68 6d 20  s any algorithm 
b0c0: 73 70 65 63 69 66 69 65 64 20 6f 6e 20 74 68 65  specified on the
b0d0: 20 42 45 47 49 4e 20 54 52 41 4e 53 41 43 54 49   BEGIN TRANSACTI
b0e0: 4f 4e 20 63 6f 6d 6d 61 6e 64 20 61 6e 64 0a 74  ON command and.t
b0f0: 68 65 20 61 6c 67 6f 72 69 74 68 6d 20 73 70 65  he algorithm spe
b100: 63 69 66 69 65 64 20 6f 6e 20 74 68 65 20 42 45  cified on the BE
b110: 47 49 4e 20 54 52 41 4e 53 41 43 54 49 4f 4e 20  GIN TRANSACTION 
b120: 63 6f 6d 6d 61 6e 64 20 6f 76 65 72 72 69 64 65  command override
b130: 73 20 74 68 65 0a 61 6c 67 6f 72 69 74 68 6d 20  s the.algorithm 
b140: 73 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65  specified in the
b150: 20 61 20 43 52 45 41 54 45 20 54 41 42 4c 45 20   a CREATE TABLE 
b160: 6f 72 20 43 52 45 41 54 45 20 49 4e 44 45 58 2e  or CREATE INDEX.
b170: 0a 49 66 20 6e 6f 20 61 6c 67 6f 72 69 74 68 6d  .If no algorithm
b180: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 61 6e   is specified an
b190: 79 77 68 65 72 65 2c 20 74 68 65 20 41 42 4f 52  ywhere, the ABOR
b1a0: 54 20 61 6c 67 6f 72 69 74 68 6d 20 69 73 20 75  T algorithm is u
b1b0: 73 65 64 2e 3c 2f 70 3e 0a 0a 7d 0a 23 20 3c 70  sed.</p>..}.# <p
b1c0: 3e 46 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20  >For additional 
b1d0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2c 20 73 65 65  information, see
b1e0: 20 0a 23 20 3c 61 20 68 72 65 66 3d 22 63 6f 6e   .# <a href="con
b1f0: 66 6c 69 63 74 2e 68 74 6d 6c 22 3e 63 6f 6e 66  flict.html">conf
b200: 6c 69 63 74 2e 68 74 6d 6c 3c 2f 61 3e 2e 3c 2f  lict.html</a>.</
b210: 70 3e 0a 0a 0a 53 65 63 74 69 6f 6e 20 50 52 41  p>...Section PRA
b220: 47 4d 41 20 70 72 61 67 6d 61 0a 0a 53 79 6e 74  GMA pragma..Synt
b230: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
b240: 74 7d 20 7b 0a 50 52 41 47 4d 41 20 3c 6e 61 6d  t} {.PRAGMA <nam
b250: 65 3e 20 5b 3d 20 3c 76 61 6c 75 65 3e 5d 20 7c  e> [= <value>] |
b260: 0a 50 52 41 47 4d 41 20 3c 66 75 6e 63 74 69 6f  .PRAGMA <functio
b270: 6e 3e 28 3c 61 72 67 3e 29 0a 7d 0a 0a 70 75 74  n>(<arg>).}..put
b280: 73 20 7b 0a 3c 70 3e 54 68 65 20 50 52 41 47 4d  s {.<p>The PRAGM
b290: 41 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 65  A command is use
b2a0: 64 20 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 20  d to modify the 
b2b0: 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65  operation of the
b2c0: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
b2d0: 0a 54 68 65 20 70 72 61 67 6d 61 20 63 6f 6d 6d  .The pragma comm
b2e0: 61 6e 64 20 69 73 20 65 78 70 65 72 69 6d 65 6e  and is experimen
b2f0: 74 61 6c 20 61 6e 64 20 73 70 65 63 69 66 69 63  tal and specific
b300: 20 70 72 61 67 6d 61 20 73 74 61 74 65 6d 65 6e   pragma statemen
b310: 74 73 20 6d 61 79 20 62 65 0a 72 65 6d 6f 76 65  ts may be.remove
b320: 64 20 6f 72 20 61 64 64 65 64 20 69 6e 20 66 75  d or added in fu
b330: 74 75 72 65 20 72 65 6c 65 61 73 65 73 20 6f 66  ture releases of
b340: 20 53 51 4c 69 74 65 2e 20 20 55 73 65 20 74 68   SQLite.  Use th
b350: 69 73 20 63 6f 6d 6d 61 6e 64 0a 77 69 74 68 20  is command.with 
b360: 63 61 75 74 69 6f 6e 2e 3c 2f 70 3e 0a 0a 3c 70  caution.</p>..<p
b370: 3e 54 68 65 20 70 72 61 67 6d 61 73 20 74 68 61  >The pragmas tha
b380: 74 20 74 61 6b 65 20 61 6e 20 69 6e 74 65 67 65  t take an intege
b390: 72 20 3c 62 3e 3c 69 3e 76 61 6c 75 65 3c 2f 69  r <b><i>value</i
b3a0: 3e 3c 2f 62 3e 20 61 6c 73 6f 20 61 63 63 65 70  ></b> also accep
b3b0: 74 20 0a 73 79 6d 62 6f 6c 69 63 20 6e 61 6d 65  t .symbolic name
b3c0: 73 2e 20 20 54 68 65 20 73 74 72 69 6e 67 73 20  s.  The strings 
b3d0: 22 3c 62 3e 6f 6e 3c 2f 62 3e 22 2c 20 22 3c 62  "<b>on</b>", "<b
b3e0: 3e 74 72 75 65 3c 2f 62 3e 22 2c 20 61 6e 64 20  >true</b>", and 
b3f0: 22 3c 62 3e 79 65 73 3c 2f 62 3e 22 20 0a 61 72  "<b>yes</b>" .ar
b400: 65 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20  e equivalent to 
b410: 3c 62 3e 31 3c 2f 62 3e 2e 20 20 54 68 65 20 73  <b>1</b>.  The s
b420: 74 72 69 6e 67 73 20 22 3c 62 3e 6f 66 66 3c 2f  trings "<b>off</
b430: 62 3e 22 2c 20 22 3c 62 3e 66 61 6c 73 65 3c 2f  b>", "<b>false</
b440: 62 3e 22 2c 20 0a 61 6e 64 20 22 3c 62 3e 6e 6f  b>", .and "<b>no
b450: 3c 2f 62 3e 22 20 61 72 65 20 65 71 75 69 76 61  </b>" are equiva
b460: 6c 65 6e 74 20 74 6f 20 3c 62 3e 30 3c 2f 62 3e  lent to <b>0</b>
b470: 2e 20 20 54 68 65 73 65 20 73 74 72 69 6e 67 73  .  These strings
b480: 20 61 72 65 20 63 61 73 65 2d 0a 69 6e 73 65 6e   are case-.insen
b490: 73 69 74 69 76 65 2c 20 61 6e 64 20 64 6f 20 6e  sitive, and do n
b4a0: 6f 74 20 72 65 71 75 69 72 65 20 71 75 6f 74 65  ot require quote
b4b0: 73 2e 20 20 41 6e 20 75 6e 72 65 63 6f 67 6e 69  s.  An unrecogni
b4c0: 7a 65 64 20 73 74 72 69 6e 67 20 77 69 6c 6c 20  zed string will 
b4d0: 62 65 20 0a 74 72 65 61 74 65 64 20 61 73 20 3c  be .treated as <
b4e0: 62 3e 31 3c 2f 62 3e 2c 20 61 6e 64 20 77 69 6c  b>1</b>, and wil
b4f0: 6c 20 6e 6f 74 20 67 65 6e 65 72 61 74 65 20 61  l not generate a
b500: 6e 20 65 72 72 6f 72 2e 20 20 57 68 65 6e 20 74  n error.  When t
b510: 68 65 20 3c 69 3e 76 61 6c 75 65 3c 2f 69 3e 20  he <i>value</i> 
b520: 0a 69 73 20 72 65 74 75 72 6e 65 64 20 69 74 20  .is returned it 
b530: 69 73 20 61 73 20 61 6e 20 69 6e 74 65 67 65 72  is as an integer
b540: 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 63 75  .</p>..<p>The cu
b550: 72 72 65 6e 74 20 69 6d 70 6c 65 6d 65 6e 74 61  rrent implementa
b560: 74 69 6f 6e 20 73 75 70 70 6f 72 74 73 20 74 68  tion supports th
b570: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 61 67  e following prag
b580: 6d 61 73 3a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c  mas:</p>..<ul>.<
b590: 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d 61 5f 63  a name="pragma_c
b5a0: 61 63 68 65 5f 73 69 7a 65 22 3e 3c 2f 61 3e 0a  ache_size"></a>.
b5b0: 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41  <li><p><b>PRAGMA
b5c0: 20 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20   cache_size;.   
b5d0: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 63      <br>PRAGMA c
b5e0: 61 63 68 65 5f 73 69 7a 65 20 3d 20 3c 2f 62 3e  ache_size = </b>
b5f0: 3c 69 3e 4e 75 6d 62 65 72 2d 6f 66 2d 70 61 67  <i>Number-of-pag
b600: 65 73 3c 2f 69 3e 3c 62 3e 3b 3c 2f 62 3e 3c 2f  es</i><b>;</b></
b610: 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72 79 20  p>.    <p>Query 
b620: 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 6d 61  or change the ma
b630: 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20  ximum number of 
b640: 64 61 74 61 62 61 73 65 20 64 69 73 6b 20 70 61  database disk pa
b650: 67 65 73 20 74 68 61 74 20 53 51 4c 69 74 65 0a  ges that SQLite.
b660: 20 20 20 20 77 69 6c 6c 20 68 6f 6c 64 20 69 6e      will hold in
b670: 20 6d 65 6d 6f 72 79 20 61 74 20 6f 6e 63 65 2e   memory at once.
b680: 20 20 45 61 63 68 20 70 61 67 65 20 75 73 65 73    Each page uses
b690: 20 61 62 6f 75 74 20 31 2e 35 4b 20 6f 66 20 6d   about 1.5K of m
b6a0: 65 6d 6f 72 79 2e 0a 20 20 20 20 54 68 65 20 64  emory..    The d
b6b0: 65 66 61 75 6c 74 20 63 61 63 68 65 20 73 69 7a  efault cache siz
b6c0: 65 20 69 73 20 32 30 30 30 2e 20 20 49 66 20 79  e is 2000.  If y
b6d0: 6f 75 20 61 72 65 20 64 6f 69 6e 67 20 55 50 44  ou are doing UPD
b6e0: 41 54 45 73 20 6f 72 20 44 45 4c 45 54 45 73 0a  ATEs or DELETEs.
b6f0: 20 20 20 20 74 68 61 74 20 63 68 61 6e 67 65 20      that change 
b700: 6d 61 6e 79 20 72 6f 77 73 20 6f 66 20 61 20 64  many rows of a d
b710: 61 74 61 62 61 73 65 20 61 6e 64 20 79 6f 75 20  atabase and you 
b720: 64 6f 20 6e 6f 74 20 6d 69 6e 64 20 69 66 20 53  do not mind if S
b730: 51 4c 69 74 65 0a 20 20 20 20 75 73 65 73 20 6d  QLite.    uses m
b740: 6f 72 65 20 6d 65 6d 6f 72 79 2c 20 79 6f 75 20  ore memory, you 
b750: 63 61 6e 20 69 6e 63 72 65 61 73 65 20 74 68 65  can increase the
b760: 20 63 61 63 68 65 20 73 69 7a 65 20 66 6f 72 20   cache size for 
b770: 61 20 70 6f 73 73 69 62 6c 65 20 73 70 65 65 64  a possible speed
b780: 0a 20 20 20 20 69 6d 70 72 6f 76 65 6d 65 6e 74  .    improvement
b790: 2e 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68 65  .</p>.    <p>Whe
b7a0: 6e 20 79 6f 75 20 63 68 61 6e 67 65 20 74 68 65  n you change the
b7b0: 20 63 61 63 68 65 20 73 69 7a 65 20 75 73 69 6e   cache size usin
b7c0: 67 20 74 68 65 20 63 61 63 68 65 5f 73 69 7a 65  g the cache_size
b7d0: 20 70 72 61 67 6d 61 2c 20 74 68 65 0a 20 20 20   pragma, the.   
b7e0: 20 63 68 61 6e 67 65 20 6f 6e 6c 79 20 65 6e 64   change only end
b7f0: 75 72 65 73 20 66 6f 72 20 74 68 65 20 63 75 72  ures for the cur
b800: 72 65 6e 74 20 73 65 73 73 69 6f 6e 2e 20 20 54  rent session.  T
b810: 68 65 20 63 61 63 68 65 20 73 69 7a 65 20 72 65  he cache size re
b820: 76 65 72 74 73 0a 20 20 20 20 74 6f 20 74 68 65  verts.    to the
b830: 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 20 77   default value w
b840: 68 65 6e 20 74 68 65 20 64 61 74 61 62 61 73 65  hen the database
b850: 20 69 73 20 63 6c 6f 73 65 64 20 61 6e 64 20 72   is closed and r
b860: 65 6f 70 65 6e 65 64 2e 20 20 55 73 65 0a 20 20  eopened.  Use.  
b870: 20 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 23    the <a href="#
b880: 70 72 61 67 6d 61 5f 64 65 66 61 75 6c 74 5f 63  pragma_default_c
b890: 61 63 68 65 5f 73 69 7a 65 22 3e 3c 62 3e 64 65  ache_size"><b>de
b8a0: 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65  fault_cache_size
b8b0: 3c 2f 62 3e 3c 2f 61 3e 20 0a 20 20 20 20 70 72  </b></a> .    pr
b8c0: 61 67 6d 61 20 74 6f 20 63 68 65 63 6b 20 74 68  agma to check th
b8d0: 65 20 63 61 63 68 65 20 73 69 7a 65 20 70 65 72  e cache size per
b8e0: 6d 61 6e 65 6e 74 6c 79 2e 3c 2f 70 3e 3c 2f 6c  manently.</p></l
b8f0: 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52  i>..<li><p><b>PR
b900: 41 47 4d 41 20 63 6f 75 6e 74 5f 63 68 61 6e 67  AGMA count_chang
b910: 65 73 20 3d 20 4f 4e 3b 20 3c 2f 62 3e 28 31 29  es = ON; </b>(1)
b920: 3c 62 3e 0a 20 20 20 20 20 20 20 3c 62 72 3e 50  <b>.       <br>P
b930: 52 41 47 4d 41 20 63 6f 75 6e 74 5f 63 68 61 6e  RAGMA count_chan
b940: 67 65 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e 20 28  ges = OFF;</b> (
b950: 30 29 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68  0)</p>.    <p>Wh
b960: 65 6e 20 6f 6e 2c 20 74 68 65 20 43 4f 55 4e 54  en on, the COUNT
b970: 5f 43 48 41 4e 47 45 53 20 70 72 61 67 6d 61 20  _CHANGES pragma 
b980: 63 61 75 73 65 73 20 74 68 65 20 63 61 6c 6c 62  causes the callb
b990: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 74 6f 0a  ack function to.
b9a0: 20 20 20 20 62 65 20 69 6e 76 6f 6b 65 64 20 6f      be invoked o
b9b0: 6e 63 65 20 66 6f 72 20 65 61 63 68 20 44 45 4c  nce for each DEL
b9c0: 45 54 45 2c 20 49 4e 53 45 52 54 2c 20 6f 72 20  ETE, INSERT, or 
b9d0: 55 50 44 41 54 45 20 6f 70 65 72 61 74 69 6f 6e  UPDATE operation
b9e0: 2e 20 20 54 68 65 0a 20 20 20 20 61 72 67 75 6d  .  The.    argum
b9f0: 65 6e 74 20 69 73 20 74 68 65 20 6e 75 6d 62 65  ent is the numbe
ba00: 72 20 6f 66 20 72 6f 77 73 20 74 68 61 74 20 77  r of rows that w
ba10: 65 72 65 20 63 68 61 6e 67 65 64 2e 3c 2f 70 3e  ere changed.</p>
ba20: 0a 20 20 20 20 3c 70 3e 54 68 69 73 20 70 72 61  .    <p>This pra
ba30: 67 6d 61 20 6d 61 79 20 62 65 20 72 65 6d 6f 76  gma may be remov
ba40: 65 64 20 66 72 6f 6d 20 66 75 74 75 72 65 20 76  ed from future v
ba50: 65 72 73 69 6f 6e 73 20 6f 66 20 53 51 4c 69 74  ersions of SQLit
ba60: 65 2e 0a 20 20 20 20 43 6f 6e 73 69 64 65 72 20  e..    Consider 
ba70: 75 73 69 6e 67 20 74 68 65 20 3c 62 3e 73 71 6c  using the <b>sql
ba80: 69 74 65 5f 63 68 61 6e 67 65 73 28 29 3c 2f 62  ite_changes()</b
ba90: 3e 20 41 50 49 20 66 75 6e 63 74 69 6f 6e 20 69  > API function i
baa0: 6e 73 74 65 61 64 2e 3c 2f 70 3e 3c 2f 6c 69 3e  nstead.</p></li>
bab0: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47  ..<li><p><b>PRAG
bac0: 4d 41 20 64 61 74 61 62 61 73 65 5f 6c 69 73 74  MA database_list
bad0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
bae0: 3e 46 6f 72 20 65 61 63 68 20 6f 70 65 6e 20 64  >For each open d
baf0: 61 74 61 62 61 73 65 2c 20 69 6e 76 6f 6b 65 20  atabase, invoke 
bb00: 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e  the callback fun
bb10: 63 74 69 6f 6e 20 6f 6e 63 65 20 77 69 74 68 0a  ction once with.
bb20: 20 20 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20      information 
bb30: 61 62 6f 75 74 20 74 68 61 74 20 64 61 74 61 62  about that datab
bb40: 61 73 65 2e 20 20 41 72 67 75 6d 65 6e 74 73 20  ase.  Arguments 
bb50: 69 6e 63 6c 75 64 65 20 74 68 65 20 69 6e 64 65  include the inde
bb60: 78 20 61 6e 64 20 0a 20 20 20 20 74 68 65 20 6e  x and .    the n
bb70: 61 6d 65 20 74 68 65 20 64 61 74 62 61 73 65 20  ame the datbase 
bb80: 77 61 73 20 61 74 74 61 63 68 65 64 20 77 69 74  was attached wit
bb90: 68 2e 20 20 54 68 65 20 66 69 72 73 74 20 72 6f  h.  The first ro
bba0: 77 20 77 69 6c 6c 20 62 65 20 66 6f 72 20 0a 20  w will be for . 
bbb0: 20 20 20 74 68 65 20 6d 61 69 6e 20 64 61 74 61     the main data
bbc0: 62 61 73 65 2e 20 20 54 68 65 20 73 65 63 6f 6e  base.  The secon
bbd0: 64 20 72 6f 77 20 77 69 6c 6c 20 62 65 20 66 6f  d row will be fo
bbe0: 72 20 74 68 65 20 64 61 74 61 62 61 73 65 20 75  r the database u
bbf0: 73 65 64 20 74 6f 20 0a 20 20 20 20 73 74 6f 72  sed to .    stor
bc00: 65 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c  e temporary tabl
bc10: 65 73 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61  es.</p></li>..<a
bc20: 20 6e 61 6d 65 3d 22 70 72 61 67 6d 61 5f 64 65   name="pragma_de
bc30: 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65  fault_cache_size
bc40: 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62  "></a>.<li><p><b
bc50: 3e 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f  >PRAGMA default_
bc60: 63 61 63 68 65 5f 73 69 7a 65 3b 0a 20 20 20 20  cache_size;.    
bc70: 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65     <br>PRAGMA de
bc80: 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a 65  fault_cache_size
bc90: 20 3d 20 3c 2f 62 3e 3c 69 3e 4e 75 6d 62 65 72   = </b><i>Number
bca0: 2d 6f 66 2d 70 61 67 65 73 3c 2f 69 3e 3c 62 3e  -of-pages</i><b>
bcb0: 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c 70  ;</b></p>.    <p
bcc0: 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65  >Query or change
bcd0: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d   the maximum num
bce0: 62 65 72 20 6f 66 20 64 61 74 61 62 61 73 65 20  ber of database 
bcf0: 64 69 73 6b 20 70 61 67 65 73 20 74 68 61 74 20  disk pages that 
bd00: 53 51 4c 69 74 65 0a 20 20 20 20 77 69 6c 6c 20  SQLite.    will 
bd10: 68 6f 6c 64 20 69 6e 20 6d 65 6d 6f 72 79 20 61  hold in memory a
bd20: 74 20 6f 6e 63 65 2e 20 20 45 61 63 68 20 70 61  t once.  Each pa
bd30: 67 65 20 75 73 65 73 20 31 4b 20 6f 6e 20 64 69  ge uses 1K on di
bd40: 73 6b 20 61 6e 64 20 61 62 6f 75 74 20 31 2e 35  sk and about 1.5
bd50: 4b 20 69 6e 20 6d 65 6d 6f 72 79 2e 0a 20 20 20  K in memory..   
bd60: 20 54 68 69 73 20 70 72 61 67 6d 61 20 77 6f 72   This pragma wor
bd70: 6b 73 20 6c 69 6b 65 20 74 68 65 20 3c 61 20 68  ks like the <a h
bd80: 72 65 66 3d 22 23 70 72 61 67 6d 61 5f 63 61 63  ref="#pragma_cac
bd90: 68 65 5f 73 69 7a 65 22 3e 3c 62 3e 63 61 63 68  he_size"><b>cach
bda0: 65 5f 73 69 7a 65 3c 2f 62 3e 3c 2f 61 3e 20 0a  e_size</b></a> .
bdb0: 20 20 20 20 70 72 61 67 6d 61 20 77 69 74 68 20      pragma with 
bdc0: 74 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 0a 20  the additional. 
bdd0: 20 20 20 66 65 61 74 75 72 65 20 74 68 61 74 20     feature that 
bde0: 69 74 20 63 68 61 6e 67 65 73 20 74 68 65 20 63  it changes the c
bdf0: 61 63 68 65 20 73 69 7a 65 20 70 65 72 73 69 73  ache size persis
be00: 74 65 6e 74 6c 79 2e 20 20 57 69 74 68 20 74 68  tently.  With th
be10: 69 73 20 70 72 61 67 6d 61 2c 0a 20 20 20 20 79  is pragma,.    y
be20: 6f 75 20 63 61 6e 20 73 65 74 20 74 68 65 20 63  ou can set the c
be30: 61 63 68 65 20 73 69 7a 65 20 6f 6e 63 65 20 61  ache size once a
be40: 6e 64 20 74 68 61 74 20 73 65 74 74 69 6e 67 20  nd that setting 
be50: 69 73 20 72 65 74 61 69 6e 65 64 20 61 6e 64 20  is retained and 
be60: 72 65 75 73 65 64 0a 20 20 20 20 65 76 65 72 79  reused.    every
be70: 74 69 6d 65 20 79 6f 75 20 72 65 6f 70 65 6e 20  time you reopen 
be80: 74 68 65 20 64 61 74 61 62 61 73 65 2e 3c 2f 70  the database.</p
be90: 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d  ></li>..<a name=
bea0: 22 70 72 61 67 6d 61 5f 64 65 66 61 75 6c 74 5f  "pragma_default_
beb0: 73 79 6e 63 68 72 6f 6e 6f 75 73 22 3e 3c 2f 61  synchronous"></a
bec0: 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47  >.<li><p><b>PRAG
bed0: 4d 41 20 64 65 66 61 75 6c 74 5f 73 79 6e 63 68  MA default_synch
bee0: 72 6f 6e 6f 75 73 3b 0a 20 20 20 20 20 20 20 3c  ronous;.       <
bef0: 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61 75 6c  br>PRAGMA defaul
bf00: 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 20 3d 20  t_synchronous = 
bf10: 46 55 4c 4c 3b 20 3c 2f 62 3e 28 32 29 3c 62 3e  FULL; </b>(2)<b>
bf20: 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47  .       <br>PRAG
bf30: 4d 41 20 64 65 66 61 75 6c 74 5f 73 79 6e 63 68  MA default_synch
bf40: 72 6f 6e 6f 75 73 20 3d 20 4e 4f 52 4d 41 4c 3b  ronous = NORMAL;
bf50: 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a 20 20 20 20   </b>(1)<b>.    
bf60: 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65     <br>PRAGMA de
bf70: 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75  fault_synchronou
bf80: 73 20 3d 20 4f 46 46 3b 20 3c 2f 62 3e 28 30 29  s = OFF; </b>(0)
bf90: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51 75 65 72  </p>.    <p>Quer
bfa0: 79 20 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20  y or change the 
bfb0: 73 65 74 74 69 6e 67 20 6f 66 20 74 68 65 20 22  setting of the "
bfc0: 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20 66 6c 61  synchronous" fla
bfd0: 67 20 69 6e 0a 20 20 20 20 74 68 65 20 64 61 74  g in.    the dat
bfe0: 61 62 61 73 65 2e 20 20 54 68 65 20 66 69 72 73  abase.  The firs
bff0: 74 20 28 71 75 65 72 79 29 20 66 6f 72 6d 20 77  t (query) form w
c000: 69 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20 73  ill return the s
c010: 65 74 74 69 6e 67 20 61 73 20 61 6e 20 0a 20 20  etting as an .  
c020: 20 20 69 6e 74 65 67 65 72 2e 20 20 57 68 65 6e    integer.  When
c030: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 69 73 20   synchronous is 
c040: 46 55 4c 4c 20 28 32 29 2c 20 74 68 65 20 53 51  FULL (2), the SQ
c050: 4c 69 74 65 20 64 61 74 61 62 61 73 65 20 65 6e  Lite database en
c060: 67 69 6e 65 20 77 69 6c 6c 0a 20 20 20 20 70 61  gine will.    pa
c070: 75 73 65 20 61 74 20 63 72 69 74 69 63 61 6c 20  use at critical 
c080: 6d 6f 6d 65 6e 74 73 20 74 6f 20 6d 61 6b 65 20  moments to make 
c090: 73 75 72 65 20 74 68 61 74 20 64 61 74 61 20 68  sure that data h
c0a0: 61 73 20 61 63 74 75 61 6c 6c 79 20 62 65 65 6e  as actually been
c0b0: 20 0a 20 20 20 20 77 72 69 74 74 65 6e 20 74 6f   .    written to
c0c0: 20 74 68 65 20 64 69 73 6b 20 73 75 72 66 61 63   the disk surfac
c0d0: 65 20 62 65 66 6f 72 65 20 63 6f 6e 74 69 6e 75  e before continu
c0e0: 69 6e 67 2e 20 20 54 68 69 73 20 65 6e 73 75 72  ing.  This ensur
c0f0: 65 73 20 74 68 61 74 20 69 66 0a 20 20 20 20 74  es that if.    t
c100: 68 65 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73  he operating sys
c110: 74 65 6d 20 63 72 61 73 68 65 73 20 6f 72 20 69  tem crashes or i
c120: 66 20 74 68 65 72 65 20 69 73 20 61 20 70 6f 77  f there is a pow
c130: 65 72 20 66 61 69 6c 75 72 65 2c 20 74 68 65 20  er failure, the 
c140: 64 61 74 61 62 61 73 65 0a 20 20 20 20 77 69 6c  database.    wil
c150: 6c 20 62 65 20 75 6e 63 6f 72 72 75 70 74 65 64  l be uncorrupted
c160: 20 61 66 74 65 72 20 72 65 62 6f 6f 74 69 6e 67   after rebooting
c170: 2e 20 20 46 55 4c 4c 20 73 79 6e 63 68 72 6f 6e  .  FULL synchron
c180: 6f 75 73 20 69 73 20 76 65 72 79 20 0a 20 20 20  ous is very .   
c190: 20 73 61 66 65 2c 20 62 75 74 20 69 74 20 69 73   safe, but it is
c1a0: 20 61 6c 73 6f 20 73 6c 6f 77 2e 20 20 0a 20 20   also slow.  .  
c1b0: 20 20 57 68 65 6e 20 73 79 6e 63 68 72 6f 6e 6f    When synchrono
c1c0: 75 73 20 69 73 20 4e 4f 52 4d 41 4c 20 28 31 2c  us is NORMAL (1,
c1d0: 20 74 68 65 20 64 65 66 61 75 6c 74 29 2c 20 74   the default), t
c1e0: 68 65 20 53 51 4c 69 74 65 20 64 61 74 61 62 61  he SQLite databa
c1f0: 73 65 0a 20 20 20 20 65 6e 67 69 6e 65 20 77 69  se.    engine wi
c200: 6c 6c 20 73 74 69 6c 6c 20 70 61 75 73 65 20 61  ll still pause a
c210: 74 20 74 68 65 20 6d 6f 73 74 20 63 72 69 74 69  t the most criti
c220: 63 61 6c 20 6d 6f 6d 65 6e 74 73 2c 20 62 75 74  cal moments, but
c230: 20 6c 65 73 73 20 6f 66 74 65 6e 0a 20 20 20 20   less often.    
c240: 74 68 61 6e 20 69 6e 20 46 55 4c 4c 20 6d 6f 64  than in FULL mod
c250: 65 2e 20 20 54 68 65 72 65 20 69 73 20 61 20 76  e.  There is a v
c260: 65 72 79 20 73 6d 61 6c 6c 20 28 74 68 6f 75 67  ery small (thoug
c270: 68 20 6e 6f 6e 2d 7a 65 72 6f 29 20 63 68 61 6e  h non-zero) chan
c280: 63 65 20 74 68 61 74 0a 20 20 20 20 61 20 70 6f  ce that.    a po
c290: 77 65 72 20 66 61 69 6c 75 72 65 20 61 74 20 6a  wer failure at j
c2a0: 75 73 74 20 74 68 65 20 77 72 6f 6e 67 20 74 69  ust the wrong ti
c2b0: 6d 65 20 63 6f 75 6c 64 20 63 6f 72 72 75 70 74  me could corrupt
c2c0: 20 74 68 65 20 64 61 74 61 62 61 73 65 20 69 6e   the database in
c2d0: 0a 20 20 20 20 4e 4f 52 4d 41 4c 20 6d 6f 64 65  .    NORMAL mode
c2e0: 2e 20 20 42 75 74 20 69 6e 20 70 72 61 63 74 69  .  But in practi
c2f0: 63 65 2c 20 79 6f 75 20 61 72 65 20 6d 6f 72 65  ce, you are more
c300: 20 6c 69 6b 65 6c 79 20 74 6f 20 73 75 66 66 65   likely to suffe
c310: 72 0a 20 20 20 20 61 20 63 61 74 61 73 74 72 6f  r.    a catastro
c320: 70 68 69 63 20 64 69 73 6b 20 66 61 69 6c 75 72  phic disk failur
c330: 65 20 6f 72 20 73 6f 6d 65 20 6f 74 68 65 72 20  e or some other 
c340: 75 6e 72 65 63 6f 76 65 72 61 62 6c 65 20 68 61  unrecoverable ha
c350: 72 64 77 61 72 65 0a 20 20 20 20 66 61 75 6c 74  rdware.    fault
c360: 2e 20 20 53 6f 20 4e 4f 52 4d 41 4c 20 69 73 20  .  So NORMAL is 
c370: 74 68 65 20 64 65 66 61 75 6c 74 20 6d 6f 64 65  the default mode
c380: 2e 0a 20 20 20 20 57 69 74 68 20 73 79 6e 63 68  ..    With synch
c390: 72 6f 6e 6f 75 73 20 4f 46 46 20 28 30 29 2c 20  ronous OFF (0), 
c3a0: 53 51 4c 69 74 65 20 63 6f 6e 74 69 6e 75 65 73  SQLite continues
c3b0: 20 77 69 74 68 6f 75 74 20 70 61 75 73 69 6e 67   without pausing
c3c0: 0a 20 20 20 20 61 73 20 73 6f 6f 6e 20 61 73 20  .    as soon as 
c3d0: 69 74 20 68 61 73 20 68 61 6e 64 65 64 20 64 61  it has handed da
c3e0: 74 61 20 6f 66 66 20 74 6f 20 74 68 65 20 6f 70  ta off to the op
c3f0: 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0a  erating system..
c400: 20 20 20 20 49 66 20 74 68 65 20 61 70 70 6c 69      If the appli
c410: 63 61 74 69 6f 6e 20 72 75 6e 6e 69 6e 67 20 53  cation running S
c420: 51 4c 69 74 65 20 63 72 61 73 68 65 73 2c 20 74  QLite crashes, t
c430: 68 65 20 64 61 74 61 20 77 69 6c 6c 20 62 65 20  he data will be 
c440: 73 61 66 65 2c 20 62 75 74 0a 20 20 20 20 74 68  safe, but.    th
c450: 65 20 64 61 74 61 62 61 73 65 20 6d 69 67 68 74  e database might
c460: 20 62 65 63 6f 6d 65 20 63 6f 72 72 75 70 74 65   become corrupte
c470: 64 20 69 66 20 74 68 65 20 6f 70 65 72 61 74 69  d if the operati
c480: 6e 67 20 73 79 73 74 65 6d 0a 20 20 20 20 63 72  ng system.    cr
c490: 61 73 68 65 73 20 6f 72 20 74 68 65 20 63 6f 6d  ashes or the com
c4a0: 70 75 74 65 72 20 6c 6f 73 65 73 20 70 6f 77 65  puter loses powe
c4b0: 72 20 62 65 66 6f 72 65 20 74 68 61 74 20 64 61  r before that da
c4c0: 74 61 20 68 61 73 20 62 65 65 6e 20 77 72 69 74  ta has been writ
c4d0: 74 65 6e 0a 20 20 20 20 74 6f 20 74 68 65 20 64  ten.    to the d
c4e0: 69 73 6b 20 73 75 72 66 61 63 65 2e 20 20 4f 6e  isk surface.  On
c4f0: 20 74 68 65 20 6f 74 68 65 72 20 68 61 6e 64 2c   the other hand,
c500: 20 73 6f 6d 65 0a 20 20 20 20 6f 70 65 72 61 74   some.    operat
c510: 69 6f 6e 73 20 61 72 65 20 61 73 20 6d 75 63 68  ions are as much
c520: 20 61 73 20 35 30 20 6f 72 20 6d 6f 72 65 20 74   as 50 or more t
c530: 69 6d 65 73 20 66 61 73 74 65 72 20 77 69 74 68  imes faster with
c540: 20 73 79 6e 63 68 72 6f 6e 6f 75 73 20 4f 46 46   synchronous OFF
c550: 2e 0a 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 3c  ..    </p>.    <
c560: 70 3e 54 68 69 73 20 70 72 61 67 6d 61 20 63 68  p>This pragma ch
c570: 61 6e 67 65 73 20 74 68 65 20 73 79 6e 63 68 72  anges the synchr
c580: 6f 6e 6f 75 73 20 6d 6f 64 65 20 70 65 72 73 69  onous mode persi
c590: 73 74 65 6e 74 6c 79 2e 20 20 4f 6e 63 65 20 63  stently.  Once c
c5a0: 68 61 6e 67 65 64 2c 0a 20 20 20 20 74 68 65 20  hanged,.    the 
c5b0: 6d 6f 64 65 20 73 74 61 79 73 20 61 73 20 73 65  mode stays as se
c5c0: 74 20 65 76 65 6e 20 69 66 20 74 68 65 20 64 61  t even if the da
c5d0: 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73 65 64  tabase is closed
c5e0: 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e 20 20   and reopened.  
c5f0: 54 68 65 0a 20 20 20 20 3c 61 20 68 72 65 66 3d  The.    <a href=
c600: 22 23 70 72 61 67 6d 61 5f 73 79 6e 63 68 72 6f  "#pragma_synchro
c610: 6e 6f 75 73 22 3e 3c 62 3e 73 79 6e 63 68 72 6f  nous"><b>synchro
c620: 6e 6f 75 73 3c 2f 62 3e 3c 2f 61 3e 20 70 72 61  nous</b></a> pra
c630: 67 6d 61 20 64 6f 65 73 20 74 68 65 20 73 61 6d  gma does the sam
c640: 65 20 0a 20 20 20 20 74 68 69 6e 67 20 62 75 74  e .    thing but
c650: 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74 68   only applies th
c660: 65 20 73 65 74 74 69 6e 67 20 74 6f 20 74 68 65  e setting to the
c670: 20 63 75 72 72 65 6e 74 20 73 65 73 73 69 6f 6e   current session
c680: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e  .</p></li>..<a n
c690: 61 6d 65 3d 22 70 72 61 67 6d 61 5f 64 65 66 61  ame="pragma_defa
c6a0: 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72 65 22 3e  ult_temp_store">
c6b0: 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  </a>.<li><p><b>P
c6c0: 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 74 65  RAGMA default_te
c6d0: 6d 70 5f 73 74 6f 72 65 3b 0a 20 20 20 20 20 20  mp_store;.      
c6e0: 20 3c 62 72 3e 50 52 41 47 4d 41 20 64 65 66 61   <br>PRAGMA defa
c6f0: 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72 65 20 3d  ult_temp_store =
c700: 20 44 45 46 41 55 4c 54 3b 20 3c 2f 62 3e 28 30   DEFAULT; </b>(0
c710: 29 3c 62 3e 0a 20 20 20 20 20 20 20 3c 62 72 3e  )<b>.       <br>
c720: 50 52 41 47 4d 41 20 64 65 66 61 75 6c 74 5f 74  PRAGMA default_t
c730: 65 6d 70 5f 73 74 6f 72 65 20 3d 20 4d 45 4d 4f  emp_store = MEMO
c740: 52 59 3b 20 3c 2f 62 3e 28 32 29 3c 62 3e 0a 20  RY; </b>(2)<b>. 
c750: 20 20 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41        <br>PRAGMA
c760: 20 64 65 66 61 75 6c 74 5f 74 65 6d 70 5f 73 74   default_temp_st
c770: 6f 72 65 20 3d 20 46 49 4c 45 3b 3c 2f 62 3e 20  ore = FILE;</b> 
c780: 28 31 29 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51  (1)</p>.    <p>Q
c790: 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74  uery or change t
c7a0: 68 65 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68  he setting of th
c7b0: 65 20 22 3c 62 3e 74 65 6d 70 5f 73 74 6f 72 65  e "<b>temp_store
c7c0: 3c 2f 62 3e 22 20 66 6c 61 67 20 73 74 6f 72 65  </b>" flag store
c7d0: 64 20 69 6e 0a 20 20 20 20 74 68 65 20 64 61 74  d in.    the dat
c7e0: 61 62 61 73 65 2e 20 20 57 68 65 6e 20 74 65 6d  abase.  When tem
c7f0: 70 5f 73 74 6f 72 65 20 69 73 20 44 45 46 41 55  p_store is DEFAU
c800: 4c 54 20 28 30 29 2c 20 74 68 65 20 63 6f 6d 70  LT (0), the comp
c810: 69 6c 65 2d 74 69 6d 65 20 76 61 6c 75 65 0a 20  ile-time value. 
c820: 20 20 20 6f 66 20 74 68 65 20 73 79 6d 62 6f 6c     of the symbol
c830: 20 54 45 4d 50 5f 53 54 4f 52 45 20 69 73 20 75   TEMP_STORE is u
c840: 73 65 64 20 66 6f 72 20 74 68 65 20 74 65 6d 70  sed for the temp
c850: 6f 72 61 72 79 20 64 61 74 61 62 61 73 65 2e 20  orary database. 
c860: 20 0a 20 20 20 20 57 68 65 6e 20 74 65 6d 70 5f   .    When temp_
c870: 73 74 6f 72 65 20 69 73 20 4d 45 4d 4f 52 59 20  store is MEMORY 
c880: 28 32 29 2c 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72  (2), an in-memor
c890: 79 20 64 61 74 61 62 61 73 65 20 69 73 20 75 73  y database is us
c8a0: 65 64 2e 20 20 0a 20 20 20 20 57 68 65 6e 20 74  ed.  .    When t
c8b0: 65 6d 70 5f 73 74 6f 72 65 20 69 73 20 46 49 4c  emp_store is FIL
c8c0: 45 20 28 31 29 2c 20 61 20 74 65 6d 70 6f 72 61  E (1), a tempora
c8d0: 72 79 20 64 61 74 61 62 61 73 65 20 66 69 6c 65  ry database file
c8e0: 20 6f 6e 20 64 69 73 6b 20 77 69 6c 6c 20 62 65   on disk will be
c8f0: 20 75 73 65 64 2e 20 20 0a 20 20 20 20 4f 6e 63   used.  .    Onc
c900: 65 20 74 68 65 20 74 65 6d 70 6f 72 61 72 79 20  e the temporary 
c910: 64 61 74 61 62 61 73 65 20 69 73 20 69 6e 20 75  database is in u
c920: 73 65 2c 20 69 74 73 20 6c 6f 63 61 74 69 6f 6e  se, its location
c930: 20 63 61 6e 6e 6f 74 20 62 65 20 63 68 61 6e 67   cannot be chang
c940: 65 64 2e 20 20 0a 20 20 20 20 49 74 20 69 73 20  ed.  .    It is 
c950: 70 6f 73 73 69 62 6c 65 20 66 6f 72 20 74 68 65  possible for the
c960: 20 6c 69 62 72 61 72 79 20 63 6f 6d 70 69 6c 65   library compile
c970: 2d 74 69 6d 65 20 73 79 6d 62 6f 6c 20 54 45 4d  -time symbol TEM
c980: 50 5f 53 54 4f 52 45 20 74 6f 20 6f 76 65 72 72  P_STORE to overr
c990: 69 64 65 20 0a 20 20 20 20 74 68 69 73 20 73 65  ide .    this se
c9a0: 74 74 69 6e 67 2e 20 20 54 68 65 20 66 6f 6c 6c  tting.  The foll
c9b0: 6f 77 69 6e 67 20 74 61 62 6c 65 20 73 75 6d 6d  owing table summ
c9c0: 61 72 69 7a 65 73 20 74 68 69 73 3a 3c 2f 70 3e  arizes this:</p>
c9d0: 0a 0a 3c 74 61 62 6c 65 20 63 65 6c 6c 70 61 64  ..<table cellpad
c9e0: 64 69 6e 67 3d 22 32 22 3e 0a 3c 74 72 3e 3c 74  ding="2">.<tr><t
c9f0: 68 3e 54 45 4d 50 5f 53 54 4f 52 45 3c 2f 74 68  h>TEMP_STORE</th
ca00: 3e 3c 74 68 3e 74 65 6d 70 5f 73 74 6f 72 65 3c  ><th>temp_store<
ca10: 2f 74 68 3e 3c 74 68 3e 74 65 6d 70 20 64 61 74  /th><th>temp dat
ca20: 61 62 61 73 65 20 6c 6f 63 61 74 69 6f 6e 3c 2f  abase location</
ca30: 74 68 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64  th></tr>.<tr><td
ca40: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
ca50: 30 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  0</td><td align=
ca60: 22 63 65 6e 74 65 72 22 3e 3c 65 6d 3e 61 6e 79  "center"><em>any
ca70: 3c 2f 65 6d 3e 3c 2f 74 64 3e 3c 74 64 20 61 6c  </em></td><td al
ca80: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 66 69 6c  ign="center">fil
ca90: 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e  e</td></tr>.<tr>
caa0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
cab0: 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  r">1</td><td ali
cac0: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 30 3c 2f 74  gn="center">0</t
cad0: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
cae0: 74 65 72 22 3e 66 69 6c 65 3c 2f 74 64 3e 3c 2f  ter">file</td></
caf0: 74 72 3e 0a 3c 74 72 3e 3c 74 64 20 61 6c 69 67  tr>.<tr><td alig
cb00: 6e 3d 22 63 65 6e 74 65 72 22 3e 31 3c 2f 74 64  n="center">1</td
cb10: 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74  ><td align="cent
cb20: 65 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c  er">1</td><td al
cb30: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 66 69 6c  ign="center">fil
cb40: 65 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e  e</td></tr>.<tr>
cb50: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
cb60: 72 22 3e 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69  r">1</td><td ali
cb70: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c 2f 74  gn="center">2</t
cb80: 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e  d><td align="cen
cb90: 74 65 72 22 3e 6d 65 6d 6f 72 79 3c 2f 74 64 3e  ter">memory</td>
cba0: 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 20 61 6c  </tr>.<tr><td al
cbb0: 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 32 3c 2f  ign="center">2</
cbc0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
cbd0: 6e 74 65 72 22 3e 30 3c 2f 74 64 3e 3c 74 64 20  nter">0</td><td 
cbe0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 6d  align="center">m
cbf0: 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72 3e 0a  emory</td></tr>.
cc00: 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63  <tr><td align="c
cc10: 65 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74 64  enter">2</td><td
cc20: 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e   align="center">
cc30: 31 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d  1</td><td align=
cc40: 22 63 65 6e 74 65 72 22 3e 66 69 6c 65 3c 2f 74  "center">file</t
cc50: 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 20  d></tr>.<tr><td 
cc60: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 32  align="center">2
cc70: 3c 2f 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22  </td><td align="
cc80: 63 65 6e 74 65 72 22 3e 32 3c 2f 74 64 3e 3c 74  center">2</td><t
cc90: 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22  d align="center"
cca0: 3e 6d 65 6d 6f 72 79 3c 2f 74 64 3e 3c 2f 74 72  >memory</td></tr
ccb0: 3e 0a 3c 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d  >.<tr><td align=
ccc0: 22 63 65 6e 74 65 72 22 3e 33 3c 2f 74 64 3e 3c  "center">3</td><
ccd0: 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  td align="center
cce0: 22 3e 3c 65 6d 3e 61 6e 79 3c 2f 65 6d 3e 3c 2f  "><em>any</em></
ccf0: 74 64 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  td><td align="ce
cd00: 6e 74 65 72 22 3e 6d 65 6d 6f 72 79 3c 2f 74 64  nter">memory</td
cd10: 3e 3c 2f 74 72 3e 0a 3c 2f 74 61 62 6c 65 3e 0a  ></tr>.</table>.
cd20: 0a 20 20 20 20 3c 70 3e 54 68 69 73 20 70 72 61  .    <p>This pra
cd30: 67 6d 61 20 63 68 61 6e 67 65 73 20 74 68 65 20  gma changes the 
cd40: 74 65 6d 70 5f 73 74 6f 72 65 20 6d 6f 64 65 20  temp_store mode 
cd50: 70 65 72 73 69 73 74 65 6e 74 6c 79 2e 20 20 4f  persistently.  O
cd60: 6e 63 65 20 63 68 61 6e 67 65 64 2c 0a 20 20 20  nce changed,.   
cd70: 20 74 68 65 20 6d 6f 64 65 20 73 74 61 79 73 20   the mode stays 
cd80: 73 65 74 20 65 76 65 6e 20 69 66 20 74 68 65 20  set even if the 
cd90: 64 61 74 61 62 61 73 65 20 69 73 20 63 6c 6f 73  database is clos
cda0: 65 64 20 61 6e 64 20 72 65 6f 70 65 6e 65 64 2e  ed and reopened.
cdb0: 20 20 54 68 65 0a 20 20 20 20 3c 61 20 68 72 65    The.    <a hre
cdc0: 66 3d 22 23 70 72 61 67 6d 61 5f 74 65 6d 70 5f  f="#pragma_temp_
cdd0: 73 74 6f 72 65 22 3e 3c 62 3e 74 65 6d 70 5f 73  store"><b>temp_s
cde0: 74 6f 72 65 3c 2f 62 3e 3c 2f 61 3e 20 70 72 61  tore</b></a> pra
cdf0: 67 6d 61 20 64 6f 65 73 20 74 68 65 20 73 61 6d  gma does the sam
ce00: 65 20 0a 20 20 20 20 74 68 69 6e 67 20 62 75 74  e .    thing but
ce10: 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74 68   only applies th
ce20: 65 20 73 65 74 74 69 6e 67 20 74 6f 20 74 68 65  e setting to the
ce30: 20 63 75 72 72 65 6e 74 20 73 65 73 73 69 6f 6e   current session
ce40: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e  .</p></li>..<a n
ce50: 61 6d 65 3d 22 70 72 61 67 6d 61 5f 65 6d 70 74  ame="pragma_empt
ce60: 79 5f 72 65 73 75 6c 74 5f 63 61 6c 6c 62 61 63  y_result_callbac
ce70: 6b 73 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e  ks"></a>.<li><p>
ce80: 3c 62 3e 50 52 41 47 4d 41 20 65 6d 70 74 79 5f  <b>PRAGMA empty_
ce90: 72 65 73 75 6c 74 5f 63 61 6c 6c 62 61 63 6b 73  result_callbacks
cea0: 20 3d 20 4f 4e 3b 20 3c 2f 62 3e 28 31 29 3c 62   = ON; </b>(1)<b
ceb0: 3e 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52 41  >.       <br>PRA
cec0: 47 4d 41 20 65 6d 70 74 79 5f 72 65 73 75 6c 74  GMA empty_result
ced0: 5f 63 61 6c 6c 62 61 63 6b 73 20 3d 20 4f 46 46  _callbacks = OFF
cee0: 3b 3c 2f 62 3e 20 28 30 29 3c 2f 70 3e 0a 20 20  ;</b> (0)</p>.  
cef0: 20 20 3c 70 3e 57 68 65 6e 20 6f 6e 2c 20 74 68    <p>When on, th
cf00: 65 20 45 4d 50 54 59 5f 52 45 53 55 4c 54 5f 43  e EMPTY_RESULT_C
cf10: 41 4c 4c 42 41 43 4b 53 20 70 72 61 67 6d 61 20  ALLBACKS pragma 
cf20: 63 61 75 73 65 73 20 74 68 65 20 63 61 6c 6c 62  causes the callb
cf30: 61 63 6b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e  ack.    function
cf40: 20 74 6f 20 62 65 20 69 6e 76 6f 6b 65 64 20 6f   to be invoked o
cf50: 6e 63 65 20 66 6f 72 20 65 61 63 68 20 71 75 65  nce for each que
cf60: 72 79 20 74 68 61 74 20 68 61 73 20 61 6e 20 65  ry that has an e
cf70: 6d 70 74 79 20 72 65 73 75 6c 74 0a 20 20 20 20  mpty result.    
cf80: 73 65 74 2e 20 20 54 68 65 20 74 68 69 72 64 20  set.  The third 
cf90: 22 3c 62 3e 61 72 67 76 3c 2f 62 3e 22 20 70 61  "<b>argv</b>" pa
cfa0: 72 61 6d 65 74 65 72 20 74 6f 20 74 68 65 20 63  rameter to the c
cfb0: 61 6c 6c 62 61 63 6b 20 69 73 20 73 65 74 20 74  allback is set t
cfc0: 6f 20 4e 55 4c 4c 0a 20 20 20 20 62 65 63 61 75  o NULL.    becau
cfd0: 73 65 20 74 68 65 72 65 20 69 73 20 6e 6f 20 64  se there is no d
cfe0: 61 74 61 20 74 6f 20 72 65 70 6f 72 74 2e 20 20  ata to report.  
cff0: 42 75 74 20 74 68 65 20 73 65 63 6f 6e 64 20 22  But the second "
d000: 3c 62 3e 61 72 67 63 3c 2f 62 3e 22 20 61 6e 64  <b>argc</b>" and
d010: 0a 20 20 20 20 66 6f 75 72 74 68 20 22 3c 62 3e  .    fourth "<b>
d020: 63 6f 6c 75 6d 6e 4e 61 6d 65 73 3c 2f 62 3e 22  columnNames</b>"
d030: 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 20   parameters are 
d040: 76 61 6c 69 64 20 61 6e 64 20 63 61 6e 20 62 65  valid and can be
d050: 20 75 73 65 64 20 74 6f 0a 20 20 20 20 64 65 74   used to.    det
d060: 65 72 6d 69 6e 65 20 74 68 65 20 6e 75 6d 62 65  ermine the numbe
d070: 72 20 61 6e 64 20 6e 61 6d 65 73 20 6f 66 20 74  r and names of t
d080: 68 65 20 63 6f 6c 75 6d 6e 73 20 74 68 61 74 20  he columns that 
d090: 77 6f 75 6c 64 20 68 61 76 65 20 62 65 65 6e 20  would have been 
d0a0: 69 6e 0a 20 20 20 20 74 68 65 20 72 65 73 75 6c  in.    the resul
d0b0: 74 20 73 65 74 20 68 61 64 20 74 68 65 20 73 65  t set had the se
d0c0: 74 20 6e 6f 74 20 62 65 65 6e 20 65 6d 70 74 79  t not been empty
d0d0: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e  .</p></li>..<li>
d0e0: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 66 6f 72  <p><b>PRAGMA for
d0f0: 65 69 67 6e 5f 6b 65 79 5f 6c 69 73 74 28 3c 2f  eign_key_list(</
d100: 62 3e 3c 69 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c  b><i>table-name<
d110: 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e  /i><b>);</b></p>
d120: 0a 20 20 20 20 3c 70 3e 46 6f 72 20 65 61 63 68  .    <p>For each
d130: 20 66 6f 72 65 69 67 6e 20 6b 65 79 20 74 68 61   foreign key tha
d140: 74 20 72 65 66 65 72 65 6e 63 65 73 20 61 20 63  t references a c
d150: 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 61 72 67  olumn in the arg
d160: 75 6d 65 6e 74 0a 20 20 20 20 74 61 62 6c 65 2c  ument.    table,
d170: 20 69 6e 76 6f 6b 65 20 74 68 65 20 63 61 6c 6c   invoke the call
d180: 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 77 69  back function wi
d190: 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  th information a
d1a0: 62 6f 75 74 20 74 68 61 74 0a 20 20 20 20 66 6f  bout that.    fo
d1b0: 72 65 69 67 6e 20 6b 65 79 2e 20 54 68 65 20 63  reign key. The c
d1c0: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e  allback function
d1d0: 20 77 69 6c 6c 20 62 65 20 69 6e 76 6f 6b 65 64   will be invoked
d1e0: 20 6f 6e 63 65 20 66 6f 72 20 65 61 63 68 0a 20   once for each. 
d1f0: 20 20 20 63 6f 6c 75 6d 6e 20 69 6e 20 65 61 63     column in eac
d200: 68 20 66 6f 72 65 69 67 6e 20 6b 65 79 2e 3c 2f  h foreign key.</
d210: 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e  p></li>..<li><p>
d220: 3c 62 3e 50 52 41 47 4d 41 20 66 75 6c 6c 5f 63  <b>PRAGMA full_c
d230: 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20 3d 20 4f 4e  olumn_names = ON
d240: 3b 20 3c 2f 62 3e 28 31 29 3c 62 3e 0a 20 20 20  ; </b>(1)<b>.   
d250: 20 20 20 20 3c 62 72 3e 50 52 41 47 4d 41 20 66      <br>PRAGMA f
d260: 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73  ull_column_names
d270: 20 3d 20 4f 46 46 3b 3c 2f 62 3e 20 28 30 29 3c   = OFF;</b> (0)<
d280: 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 68 65 20 63  /p>.    <p>The c
d290: 6f 6c 75 6d 6e 20 6e 61 6d 65 73 20 72 65 70 6f  olumn names repo
d2a0: 72 74 65 64 20 69 6e 20 61 6e 20 53 51 4c 69 74  rted in an SQLit
d2b0: 65 20 63 61 6c 6c 62 61 63 6b 20 61 72 65 20 6e  e callback are n
d2c0: 6f 72 6d 61 6c 6c 79 20 6a 75 73 74 0a 20 20 20  ormally just.   
d2d0: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
d2e0: 20 63 6f 6c 75 6d 6e 20 69 74 73 65 6c 66 2c 20   column itself, 
d2f0: 65 78 63 65 70 74 20 66 6f 72 20 6a 6f 69 6e 73  except for joins
d300: 20 77 68 65 6e 20 22 54 41 42 4c 45 2e 43 4f 4c   when "TABLE.COL
d310: 55 4d 4e 22 0a 20 20 20 20 69 73 20 75 73 65 64  UMN".    is used
d320: 2e 20 20 42 75 74 20 77 68 65 6e 20 66 75 6c 6c  .  But when full
d330: 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 20 69 73  _column_names is
d340: 20 74 75 72 6e 65 64 20 6f 6e 2c 20 63 6f 6c 75   turned on, colu
d350: 6d 6e 20 6e 61 6d 65 73 20 61 72 65 0a 20 20 20  mn names are.   
d360: 20 61 6c 77 61 79 73 20 72 65 70 6f 72 74 65 64   always reported
d370: 20 61 73 20 22 54 41 42 4c 45 2e 43 4f 4c 55 4d   as "TABLE.COLUM
d380: 4e 22 20 65 76 65 6e 20 66 6f 72 20 73 69 6d 70  N" even for simp
d390: 6c 65 20 71 75 65 72 69 65 73 2e 3c 2f 70 3e 3c  le queries.</p><
d3a0: 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e  /li>..<li><p><b>
d3b0: 50 52 41 47 4d 41 20 69 6e 64 65 78 5f 69 6e 66  PRAGMA index_inf
d3c0: 6f 28 3c 2f 62 3e 3c 69 3e 69 6e 64 65 78 2d 6e  o(</b><i>index-n
d3d0: 61 6d 65 3c 2f 69 3e 3c 62 3e 29 3b 3c 2f 62 3e  ame</i><b>);</b>
d3e0: 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 46 6f 72 20  </p>.    <p>For 
d3f0: 65 61 63 68 20 63 6f 6c 75 6d 6e 20 74 68 61 74  each column that
d400: 20 74 68 65 20 6e 61 6d 65 64 20 69 6e 64 65 78   the named index
d410: 20 72 65 66 65 72 65 6e 63 65 73 2c 20 69 6e 76   references, inv
d420: 6f 6b 65 20 74 68 65 20 0a 20 20 20 20 63 61 6c  oke the .    cal
d430: 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 0a 20  lback function. 
d440: 20 20 20 6f 6e 63 65 20 77 69 74 68 20 69 6e 66     once with inf
d450: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74  ormation about t
d460: 68 61 74 20 63 6f 6c 75 6d 6e 2c 20 69 6e 63 6c  hat column, incl
d470: 75 64 69 6e 67 20 74 68 65 20 63 6f 6c 75 6d 6e  uding the column
d480: 20 6e 61 6d 65 2c 0a 20 20 20 20 61 6e 64 20 74   name,.    and t
d490: 68 65 20 63 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72  he column number
d4a0: 2e 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e  .</p></li>..<li>
d4b0: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 69 6e 64  <p><b>PRAGMA ind
d4c0: 65 78 5f 6c 69 73 74 28 3c 2f 62 3e 3c 69 3e 74  ex_list(</b><i>t
d4d0: 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 3c 62 3e  able-name</i><b>
d4e0: 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20 3c  );</b></p>.    <
d4f0: 70 3e 46 6f 72 20 65 61 63 68 20 69 6e 64 65 78  p>For each index
d500: 20 6f 6e 20 74 68 65 20 6e 61 6d 65 64 20 74 61   on the named ta
d510: 62 6c 65 2c 20 69 6e 76 6f 6b 65 20 74 68 65 20  ble, invoke the 
d520: 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f  callback functio
d530: 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69 74 68 20  n.    once with 
d540: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75  information abou
d550: 74 20 74 68 61 74 20 69 6e 64 65 78 2e 20 20 41  t that index.  A
d560: 72 67 75 6d 65 6e 74 73 20 69 6e 63 6c 75 64 65  rguments include
d570: 20 74 68 65 0a 20 20 20 20 69 6e 64 65 78 20 6e   the.    index n
d580: 61 6d 65 20 61 6e 64 20 61 20 66 6c 61 67 20 74  ame and a flag t
d590: 6f 20 69 6e 64 69 63 61 74 65 20 77 68 65 74 68  o indicate wheth
d5a0: 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 69 6e  er or not the in
d5b0: 64 65 78 20 6d 75 73 74 20 62 65 0a 20 20 20 20  dex must be.    
d5c0: 75 6e 69 71 75 65 2e 3c 2f 70 3e 3c 2f 6c 69 3e  unique.</p></li>
d5d0: 0a 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50 52 41 47  ..<li><p><b>PRAG
d5e0: 4d 41 20 69 6e 74 65 67 72 69 74 79 5f 63 68 65  MA integrity_che
d5f0: 63 6b 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20 20  ck;</b></p>.    
d600: 3c 70 3e 54 68 65 20 63 6f 6d 6d 61 6e 64 20 64  <p>The command d
d610: 6f 65 73 20 61 6e 20 69 6e 74 65 67 72 69 74 79  oes an integrity
d620: 20 63 68 65 63 6b 20 6f 66 20 74 68 65 20 65 6e   check of the en
d630: 74 69 72 65 20 64 61 74 61 62 61 73 65 2e 20 20  tire database.  
d640: 49 74 0a 20 20 20 20 6c 6f 6f 6b 73 20 66 6f 72  It.    looks for
d650: 20 6f 75 74 2d 6f 66 2d 6f 72 64 65 72 20 72 65   out-of-order re
d660: 63 6f 72 64 73 2c 20 6d 69 73 73 69 6e 67 20 70  cords, missing p
d670: 61 67 65 73 2c 20 6d 61 6c 66 6f 72 6d 65 64 20  ages, malformed 
d680: 72 65 63 6f 72 64 73 2c 20 61 6e 64 0a 20 20 20  records, and.   
d690: 20 63 6f 72 72 75 70 74 20 69 6e 64 69 63 65 73   corrupt indices
d6a0: 2e 0a 20 20 20 20 49 66 20 61 6e 79 20 70 72 6f  ..    If any pro
d6b0: 62 6c 65 6d 73 20 61 72 65 20 66 6f 75 6e 64 2c  blems are found,
d6c0: 20 74 68 65 6e 20 61 20 73 69 6e 67 6c 65 20 73   then a single s
d6d0: 74 72 69 6e 67 20 69 73 20 72 65 74 75 72 6e 65  tring is returne
d6e0: 64 20 77 68 69 63 68 20 69 73 0a 20 20 20 20 61  d which is.    a
d6f0: 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20   description of 
d700: 61 6c 6c 20 70 72 6f 62 6c 65 6d 73 2e 20 20 49  all problems.  I
d710: 66 20 65 76 65 72 79 74 68 69 6e 67 20 69 73 20  f everything is 
d720: 69 6e 20 6f 72 64 65 72 2c 20 22 6f 6b 22 20 69  in order, "ok" i
d730: 73 0a 20 20 20 20 72 65 74 75 72 6e 65 64 2e 3c  s.    returned.<
d740: 2f 70 3e 3c 2f 6c 69 3e 0a 0a 3c 6c 69 3e 3c 70  /p></li>..<li><p
d750: 3e 3c 62 3e 50 52 41 47 4d 41 20 70 61 72 73 65  ><b>PRAGMA parse
d760: 72 5f 74 72 61 63 65 20 3d 20 4f 4e 3b 20 3c 2f  r_trace = ON; </
d770: 62 3e 28 31 29 3c 62 3e 0a 20 20 20 20 3c 62 72  b>(1)<b>.    <br
d780: 3e 50 52 41 47 4d 41 20 70 61 72 73 65 72 5f 74  >PRAGMA parser_t
d790: 72 61 63 65 20 3d 20 4f 46 46 3b 3c 2f 62 3e 20  race = OFF;</b> 
d7a0: 28 30 29 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54  (0)</p>.    <p>T
d7b0: 75 72 6e 20 74 72 61 63 69 6e 67 20 6f 66 20 74  urn tracing of t
d7c0: 68 65 20 53 51 4c 20 70 61 72 73 65 72 20 69 6e  he SQL parser in
d7d0: 73 69 64 65 20 6f 66 20 74 68 65 0a 20 20 20 20  side of the.    
d7e0: 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 6f  SQLite library o
d7f0: 6e 20 61 6e 64 20 6f 66 66 2e 20 20 54 68 69 73  n and off.  This
d800: 20 69 73 20 75 73 65 64 20 66 6f 72 20 64 65 62   is used for deb
d810: 75 67 67 69 6e 67 2e 0a 20 20 20 20 54 68 69 73  ugging..    This
d820: 20 6f 6e 6c 79 20 77 6f 72 6b 73 20 69 66 20 74   only works if t
d830: 68 65 20 6c 69 62 72 61 72 79 20 69 73 20 63 6f  he library is co
d840: 6d 70 69 6c 65 64 20 77 69 74 68 6f 75 74 20 74  mpiled without t
d850: 68 65 20 4e 44 45 42 55 47 20 6d 61 63 72 6f 2e  he NDEBUG macro.
d860: 0a 20 20 20 20 3c 2f 70 3e 3c 2f 6c 69 3e 0a 0a  .    </p></li>..
d870: 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67 6d 61 5f  <a name="pragma_
d880: 73 68 6f 77 5f 64 61 74 61 74 79 70 65 73 22 3e  show_datatypes">
d890: 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  </a>.<li><p><b>P
d8a0: 52 41 47 4d 41 20 73 68 6f 77 5f 64 61 74 61 74  RAGMA show_datat
d8b0: 79 70 65 73 20 3d 20 4f 4e 3b 20 3c 2f 62 3e 28  ypes = ON; </b>(
d8c0: 31 29 3c 62 3e 0a 20 20 20 20 3c 62 72 3e 50 52  1)<b>.    <br>PR
d8d0: 41 47 4d 41 20 73 68 6f 77 5f 64 61 74 61 74 79  AGMA show_dataty
d8e0: 70 65 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e 20 28  pes = OFF;</b> (
d8f0: 30 29 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 57 68  0)</p>.    <p>Wh
d900: 65 6e 20 74 75 72 6e 65 64 20 6f 6e 2c 20 74 68  en turned on, th
d910: 65 20 53 48 4f 57 5f 44 41 54 41 54 59 50 45 53  e SHOW_DATATYPES
d920: 20 70 72 61 67 6d 61 20 63 61 75 73 65 73 20 65   pragma causes e
d930: 78 74 72 61 20 65 6e 74 72 69 65 73 20 63 6f 6e  xtra entries con
d940: 74 61 69 6e 69 6e 67 0a 20 20 20 20 74 68 65 20  taining.    the 
d950: 6e 61 6d 65 73 20 6f 66 20 3c 61 20 68 72 65 66  names of <a href
d960: 3d 22 64 61 74 61 74 79 70 65 73 2e 68 74 6d 6c  ="datatypes.html
d970: 22 3e 64 61 74 61 74 79 70 65 73 3c 2f 61 3e 20  ">datatypes</a> 
d980: 6f 66 20 63 6f 6c 75 6d 6e 73 20 74 6f 20 62 65  of columns to be
d990: 0a 20 20 20 20 61 70 70 65 6e 64 65 64 20 74 6f  .    appended to
d9a0: 20 74 68 65 20 34 74 68 20 28 22 63 6f 6c 75 6d   the 4th ("colum
d9b0: 6e 4e 61 6d 65 73 22 29 20 61 72 67 75 6d 65 6e  nNames") argumen
d9c0: 74 20 74 6f 20 3c 62 3e 73 71 6c 69 74 65 5f 65  t to <b>sqlite_e
d9d0: 78 65 63 28 29 3c 2f 62 3e 0a 20 20 20 20 63 61  xec()</b>.    ca
d9e0: 6c 6c 62 61 63 6b 73 2e 20 20 57 68 65 6e 0a 20  llbacks.  When. 
d9f0: 20 20 20 74 75 72 6e 65 64 20 6f 66 66 2c 20 74     turned off, t
da00: 68 65 20 34 74 68 20 61 72 67 75 6d 65 6e 74 20  he 4th argument 
da10: 74 6f 20 63 61 6c 6c 62 61 63 6b 73 20 63 6f 6e  to callbacks con
da20: 74 61 69 6e 73 20 6f 6e 6c 79 20 74 68 65 20 63  tains only the c
da30: 6f 6c 75 6d 6e 20 6e 61 6d 65 73 2e 0a 20 20 20  olumn names..   
da40: 20 54 68 65 20 64 61 74 61 74 79 70 65 20 66 6f   The datatype fo
da50: 72 20 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 73 20  r table columns 
da60: 69 73 20 74 61 6b 65 6e 20 66 72 6f 6d 20 74 68  is taken from th
da70: 65 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 73  e CREATE TABLE s
da80: 74 61 74 65 6d 65 6e 74 0a 20 20 20 20 74 68 61  tatement.    tha
da90: 74 20 64 65 66 69 6e 65 73 20 74 68 65 20 74 61  t defines the ta
daa0: 62 6c 65 2e 20 20 43 6f 6c 75 6d 6e 73 20 77 69  ble.  Columns wi
dab0: 74 68 20 61 6e 20 75 6e 73 70 65 63 69 66 69 65  th an unspecifie
dac0: 64 20 64 61 74 61 74 79 70 65 20 68 61 76 65 20  d datatype have 
dad0: 61 0a 20 20 20 20 64 61 74 61 74 79 70 65 20 6f  a.    datatype o
dae0: 66 20 22 4e 55 4d 45 52 49 43 22 20 61 6e 64 20  f "NUMERIC" and 
daf0: 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 65  the results of e
db00: 78 70 72 65 73 73 69 6f 6e 20 68 61 76 65 20 61  xpression have a
db10: 20 64 61 74 61 74 79 70 65 20 6f 66 0a 20 20 20   datatype of.   
db20: 20 65 69 74 68 65 72 20 22 54 45 58 54 22 20 6f   either "TEXT" o
db30: 72 20 22 4e 55 4d 45 52 49 43 22 20 64 65 70 65  r "NUMERIC" depe
db40: 6e 64 69 6e 67 20 6f 6e 20 74 68 65 20 65 78 70  nding on the exp
db50: 72 65 73 73 69 6f 6e 2e 0a 20 20 20 20 54 68 65  ression..    The
db60: 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 68 61 72 74   following chart
db70: 20 69 6c 6c 75 73 74 72 61 74 65 73 20 74 68 65   illustrates the
db80: 20 64 69 66 66 65 72 65 6e 63 65 20 66 6f 72 20   difference for 
db90: 74 68 65 20 71 75 65 72 79 0a 20 20 20 20 22 53  the query.    "S
dba0: 45 4c 45 43 54 20 27 78 79 7a 7a 79 27 2c 20 35  ELECT 'xyzzy', 5
dbb0: 2c 20 4e 55 4c 4c 20 41 53 20 65 6d 70 74 79 20  , NULL AS empty 
dbc0: 22 3a 3c 2f 70 3e 0a 0a 20 20 20 20 3c 62 6c 6f  ":</p>..    <blo
dbd0: 63 6b 71 75 6f 74 65 3e 3c 74 61 62 6c 65 20 62  ckquote><table b
dbe0: 6f 72 64 65 72 3d 30 3e 0a 20 20 20 20 3c 74 72  order=0>.    <tr
dbf0: 3e 3c 74 68 3e 73 68 6f 77 5f 64 61 74 61 74 79  ><th>show_dataty
dc00: 70 65 73 3d 4f 46 46 3c 2f 74 68 3e 3c 74 68 20  pes=OFF</th><th 
dc10: 77 69 64 74 68 3d 33 30 3e 3c 2f 74 68 3e 0a 20  width=30></th>. 
dc20: 20 20 20 20 20 20 20 3c 74 68 3e 73 68 6f 77 5f         <th>show_
dc30: 64 61 74 61 74 79 70 65 73 3d 4f 4e 3c 2f 74 68  datatypes=ON</th
dc40: 3e 3c 2f 74 72 3e 0a 20 20 20 20 3c 74 72 3e 3c  ></tr>.    <tr><
dc50: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
dc60: 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 30 5d  .       azCol[0]
dc70: 20 3d 20 22 78 79 7a 7a 79 22 3b 3c 62 72 3e 0a   = "xyzzy";<br>.
dc80: 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 31 5d 20         azCol[1] 
dc90: 3d 20 22 35 22 3b 3c 62 72 3e 0a 20 20 20 20 20  = "5";<br>.     
dca0: 20 20 61 7a 43 6f 6c 5b 32 5d 20 3d 20 22 65 6d    azCol[2] = "em
dcb0: 70 74 79 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20  pty";<br>.      
dcc0: 20 61 7a 43 6f 6c 5b 33 5d 20 3d 20 30 3b 0a 20   azCol[3] = 0;. 
dcd0: 20 20 20 3c 2f 74 64 3e 3c 74 64 3e 3c 2f 74 64     </td><td></td
dce0: 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ><td valign="top
dcf0: 22 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b  ">.       azCol[
dd00: 30 5d 20 3d 20 22 78 79 7a 7a 79 22 3b 3c 62 72  0] = "xyzzy";<br
dd10: 3e 0a 20 20 20 20 20 20 20 61 7a 43 6f 6c 5b 31  >.       azCol[1
dd20: 5d 20 3d 20 22 35 22 3b 3c 62 72 3e 0a 20 20 20  ] = "5";<br>.   
dd30: 20 20 20 20 61 7a 43 6f 6c 5b 32 5d 20 3d 20 22      azCol[2] = "
dd40: 65 6d 70 74 79 22 3b 3c 62 72 3e 0a 20 20 20 20  empty";<br>.    
dd50: 20 20 20 61 7a 43 6f 6c 5b 33 5d 20 3d 20 22 54     azCol[3] = "T
dd60: 45 58 54 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20  EXT";<br>.      
dd70: 20 61 7a 43 6f 6c 5b 34 5d 20 3d 20 22 4e 55 4d   azCol[4] = "NUM
dd80: 45 52 49 43 22 3b 3c 62 72 3e 0a 20 20 20 20 20  ERIC";<br>.     
dd90: 20 20 61 7a 43 6f 6c 5b 35 5d 20 3d 20 22 54 45    azCol[5] = "TE
dda0: 58 54 22 3b 3c 62 72 3e 0a 20 20 20 20 20 20 20  XT";<br>.       
ddb0: 61 7a 43 6f 6c 5b 36 5d 20 3d 20 30 3b 0a 20 20  azCol[6] = 0;.  
ddc0: 20 20 3c 2f 74 64 3e 3c 2f 74 61 62 6c 65 3e 3c    </td></table><
ddd0: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c 2f 6c 69  /blockquote></li
dde0: 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22 70 72 61 67  >..<a name="prag
ddf0: 6d 61 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 22 3e  ma_synchronous">
de00: 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c 62 3e 50  </a>.<li><p><b>P
de10: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
de20: 73 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e 50 52  s;.       <br>PR
de30: 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75 73  AGMA synchronous
de40: 20 3d 20 46 55 4c 4c 3b 20 3c 2f 62 3e 28 32 29   = FULL; </b>(2)
de50: 3c 62 3e 0a 20 20 20 20 20 20 20 3c 62 72 3e 50  <b>.       <br>P
de60: 52 41 47 4d 41 20 73 79 6e 63 68 72 6f 6e 6f 75  RAGMA synchronou
de70: 73 20 3d 20 4e 4f 52 4d 41 4c 3b 20 3c 2f 62 3e  s = NORMAL; </b>
de80: 28 31 29 3c 62 3e 0a 20 20 20 20 20 20 20 3c 62  (1)<b>.       <b
de90: 72 3e 50 52 41 47 4d 41 20 73 79 6e 63 68 72 6f  r>PRAGMA synchro
dea0: 6e 6f 75 73 20 3d 20 4f 46 46 3b 3c 2f 62 3e 20  nous = OFF;</b> 
deb0: 28 30 29 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 51  (0)</p>.    <p>Q
dec0: 75 65 72 79 20 6f 72 20 63 68 61 6e 67 65 20 74  uery or change t
ded0: 68 65 20 73 65 74 74 69 6e 67 20 6f 66 20 74 68  he setting of th
dee0: 65 20 22 73 79 6e 63 68 72 6f 6e 6f 75 73 22 20  e "synchronous" 
def0: 66 6c 61 67 20 61 66 66 65 63 74 69 6e 67 0a 20  flag affecting. 
df00: 20 20 20 74 68 65 20 64 61 74 61 62 61 73 65 20     the database 
df10: 66 6f 72 20 74 68 65 20 64 75 72 61 74 69 6f 6e  for the duration
df20: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   of the current 
df30: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
df40: 69 6f 6e 2e 0a 20 20 20 20 54 68 65 20 73 79 6e  ion..    The syn
df50: 63 68 72 6f 6e 6f 75 73 20 66 6c 61 67 20 72 65  chronous flag re
df60: 76 65 72 74 73 20 74 6f 20 69 74 73 20 64 65 66  verts to its def
df70: 61 75 6c 74 20 76 61 6c 75 65 20 77 68 65 6e 20  ault value when 
df80: 74 68 65 20 64 61 74 61 62 61 73 65 0a 20 20 20  the database.   
df90: 20 69 73 20 63 6c 6f 73 65 64 20 61 6e 64 20 72   is closed and r
dfa0: 65 6f 70 65 6e 65 64 2e 20 20 46 6f 72 20 61 64  eopened.  For ad
dfb0: 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61  ditional informa
dfc0: 74 69 6f 6e 20 6f 6e 20 74 68 65 20 73 79 6e 63  tion on the sync
dfd0: 68 72 6f 6e 6f 75 73 0a 20 20 20 20 66 6c 61 67  hronous.    flag
dfe0: 2c 20 73 65 65 20 74 68 65 20 64 65 73 63 72 69  , see the descri
dff0: 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c 61 20  ption of the <a 
e000: 68 72 65 66 3d 22 23 70 72 61 67 6d 61 5f 64 65  href="#pragma_de
e010: 66 61 75 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75  fault_synchronou
e020: 73 22 3e 0a 20 20 20 20 3c 62 3e 64 65 66 61 75  s">.    <b>defau
e030: 6c 74 5f 73 79 6e 63 68 72 6f 6e 6f 75 73 3c 2f  lt_synchronous</
e040: 62 3e 3c 2f 61 3e 20 70 72 61 67 6d 61 2e 3c 2f  b></a> pragma.</
e050: 70 3e 0a 20 20 20 20 3c 2f 6c 69 3e 0a 0a 3c 6c  p>.    </li>..<l
e060: 69 3e 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 74  i><p><b>PRAGMA t
e070: 61 62 6c 65 5f 69 6e 66 6f 28 3c 2f 62 3e 3c 69  able_info(</b><i
e080: 3e 74 61 62 6c 65 2d 6e 61 6d 65 3c 2f 69 3e 3c  >table-name</i><
e090: 62 3e 29 3b 3c 2f 62 3e 3c 2f 70 3e 0a 20 20 20  b>);</b></p>.   
e0a0: 20 3c 70 3e 46 6f 72 20 65 61 63 68 20 63 6f 6c   <p>For each col
e0b0: 75 6d 6e 20 69 6e 20 74 68 65 20 6e 61 6d 65 64  umn in the named
e0c0: 20 74 61 62 6c 65 2c 20 69 6e 76 6f 6b 65 20 74   table, invoke t
e0d0: 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63  he callback func
e0e0: 74 69 6f 6e 0a 20 20 20 20 6f 6e 63 65 20 77 69  tion.    once wi
e0f0: 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61  th information a
e100: 62 6f 75 74 20 74 68 61 74 20 63 6f 6c 75 6d 6e  bout that column
e110: 2c 20 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20  , including the 
e120: 63 6f 6c 75 6d 6e 20 6e 61 6d 65 2c 0a 20 20 20  column name,.   
e130: 20 64 61 74 61 20 74 79 70 65 2c 20 77 68 65 74   data type, whet
e140: 68 65 72 20 6f 72 20 6e 6f 74 20 74 68 65 20 63  her or not the c
e150: 6f 6c 75 6d 6e 20 63 61 6e 20 62 65 20 4e 55 4c  olumn can be NUL
e160: 4c 2c 20 61 6e 64 20 74 68 65 20 64 65 66 61 75  L, and the defau
e170: 6c 74 0a 20 20 20 20 76 61 6c 75 65 20 66 6f 72  lt.    value for
e180: 20 74 68 65 20 63 6f 6c 75 6d 6e 2e 3c 2f 70 3e   the column.</p>
e190: 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61 6d 65 3d 22  </li>..<a name="
e1a0: 70 72 61 67 6d 61 5f 74 65 6d 70 5f 73 74 6f 72  pragma_temp_stor
e1b0: 65 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e 3c 70 3e 3c  e"></a>.<li><p><
e1c0: 62 3e 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74  b>PRAGMA temp_st
e1d0: 6f 72 65 3b 0a 20 20 20 20 20 20 20 3c 62 72 3e  ore;.       <br>
e1e0: 50 52 41 47 4d 41 20 74 65 6d 70 5f 73 74 6f 72  PRAGMA temp_stor
e1f0: 65 20 3d 20 44 45 46 41 55 4c 54 3b 20 3c 2f 62  e = DEFAULT; </b
e200: 3e 28 30 29 3c 62 3e 0a 20 20 20 20 20 20 20 3c  >(0)<b>.       <
e210: 62 72 3e 50 52 41 47 4d 41 20 74 65 6d 70 5f 73  br>PRAGMA temp_s
e220: 74 6f 72 65 20 3d 20 4d 45 4d 4f 52 59 3b 20 3c  tore = MEMORY; <
e230: 2f 62 3e 28 32 29 3c 62 3e 0a 20 20 20 20 20 20  /b>(2)<b>.      
e240: 20 3c 62 72 3e 50 52 41 47 4d 41 20 74 65 6d 70   <br>PRAGMA temp
e250: 5f 73 74 6f 72 65 20 3d 20 46 49 4c 45 3b 3c 2f  _store = FILE;</
e260: 62 3e 20 28 31 29 3c 2f 70 3e 0a 20 20 20 20 3c  b> (1)</p>.    <
e270: 70 3e 51 75 65 72 79 20 6f 72 20 63 68 61 6e 67  p>Query or chang
e280: 65 20 74 68 65 20 73 65 74 74 69 6e 67 20 6f 66  e the setting of
e290: 20 74 68 65 20 22 74 65 6d 70 5f 73 74 6f 72 65   the "temp_store
e2a0: 22 20 66 6c 61 67 20 61 66 66 65 63 74 69 6e 67  " flag affecting
e2b0: 0a 20 20 20 20 74 68 65 20 64 61 74 61 62 61 73  .    the databas
e2c0: 65 20 66 6f 72 20 74 68 65 20 64 75 72 61 74 69  e for the durati
e2d0: 6f 6e 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e  on of the curren
e2e0: 74 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65  t database conne
e2f0: 63 74 69 6f 6e 2e 0a 20 20 20 20 54 68 65 20 74  ction..    The t
e300: 65 6d 70 5f 73 74 6f 72 65 20 66 6c 61 67 20 72  emp_store flag r
e310: 65 76 65 72 74 73 20 74 6f 20 69 74 73 20 64 65  everts to its de
e320: 66 61 75 6c 74 20 76 61 6c 75 65 20 77 68 65 6e  fault value when
e330: 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 20 20   the database.  
e340: 20 20 69 73 20 63 6c 6f 73 65 64 20 61 6e 64 20    is closed and 
e350: 72 65 6f 70 65 6e 65 64 2e 20 20 46 6f 72 20 61  reopened.  For a
e360: 64 64 69 74 69 6f 6e 61 6c 20 69 6e 66 6f 72 6d  dditional inform
e370: 61 74 69 6f 6e 20 6f 6e 20 74 68 65 20 74 65 6d  ation on the tem
e380: 70 5f 73 74 6f 72 65 0a 20 20 20 20 66 6c 61 67  p_store.    flag
e390: 2c 20 73 65 65 20 74 68 65 20 64 65 73 63 72 69  , see the descri
e3a0: 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 3c 61 20  ption of the <a 
e3b0: 68 72 65 66 3d 22 23 70 72 61 67 6d 61 5f 64 65  href="#pragma_de
e3c0: 66 61 75 6c 74 5f 74 65 6d 70 5f 73 74 6f 72 65  fault_temp_store
e3d0: 22 3e 0a 20 20 20 20 3c 62 3e 64 65 66 61 75 6c  ">.    <b>defaul
e3e0: 74 5f 74 65 6d 70 5f 73 74 6f 72 65 3c 2f 62 3e  t_temp_store</b>
e3f0: 3c 2f 61 3e 20 70 72 61 67 6d 61 2e 20 20 4e 6f  </a> pragma.  No
e400: 74 65 20 74 68 61 74 20 69 74 20 69 73 20 70 6f  te that it is po
e410: 73 73 69 62 6c 65 20 66 6f 72 20 0a 20 20 20 20  ssible for .    
e420: 74 68 65 20 6c 69 62 72 61 72 79 20 63 6f 6d 70  the library comp
e430: 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 73  ile-time options
e440: 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69   to override thi
e450: 73 20 73 65 74 74 69 6e 67 2e 20 3c 2f 70 3e 0a  s setting. </p>.
e460: 20 20 20 20 3c 2f 6c 69 3e 0a 0a 3c 61 20 6e 61      </li>..<a na
e470: 6d 65 3d 22 70 72 61 67 6d 61 5f 76 64 62 65 5f  me="pragma_vdbe_
e480: 74 72 61 63 65 22 3e 3c 2f 61 3e 0a 3c 6c 69 3e  trace"></a>.<li>
e490: 3c 70 3e 3c 62 3e 50 52 41 47 4d 41 20 76 64 62  <p><b>PRAGMA vdb
e4a0: 65 5f 74 72 61 63 65 20 3d 20 4f 4e 3b 20 3c 2f  e_trace = ON; </
e4b0: 62 3e 28 31 29 3c 62 3e 0a 20 20 20 20 3c 62 72  b>(1)<b>.    <br
e4c0: 3e 50 52 41 47 4d 41 20 76 64 62 65 5f 74 72 61  >PRAGMA vdbe_tra
e4d0: 63 65 20 3d 20 4f 46 46 3b 3c 2f 62 3e 20 28 30  ce = OFF;</b> (0
e4e0: 29 3c 2f 70 3e 0a 20 20 20 20 3c 70 3e 54 75 72  )</p>.    <p>Tur
e4f0: 6e 20 74 72 61 63 69 6e 67 20 6f 66 20 74 68 65  n tracing of the
e500: 20 76 69 72 74 75 61 6c 20 64 61 74 61 62 61 73   virtual databas
e510: 65 20 65 6e 67 69 6e 65 20 69 6e 73 69 64 65 20  e engine inside 
e520: 6f 66 20 74 68 65 0a 20 20 20 20 53 51 4c 69 74  of the.    SQLit
e530: 65 20 6c 69 62 72 61 72 79 20 6f 6e 20 61 6e 64  e library on and
e540: 20 6f 66 66 2e 20 20 54 68 69 73 20 69 73 20 75   off.  This is u
e550: 73 65 64 20 66 6f 72 20 64 65 62 75 67 67 69 6e  sed for debuggin
e560: 67 2e 20 20 53 65 65 20 74 68 65 20 0a 20 20 20  g.  See the .   
e570: 20 3c 61 20 68 72 65 66 3d 22 76 64 62 65 2e 68   <a href="vdbe.h
e580: 74 6d 6c 23 74 72 61 63 65 22 3e 56 44 42 45 20  tml#trace">VDBE 
e590: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 3c 2f 61  documentation</a
e5a0: 3e 20 66 6f 72 20 6d 6f 72 65 20 0a 20 20 20 20  > for more .    
e5b0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e  information.</p>
e5c0: 3c 2f 6c 69 3e 0a 3c 2f 75 6c 3e 0a 0a 3c 70 3e  </li>.</ul>..<p>
e5d0: 4e 6f 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65  No error message
e5e0: 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 69 66   is generated if
e5f0: 20 61 6e 20 75 6e 6b 6e 6f 77 6e 20 70 72 61 67   an unknown prag
e600: 6d 61 20 69 73 20 69 73 73 75 65 64 2e 0a 55 6e  ma is issued..Un
e610: 6b 6e 6f 77 6e 20 70 72 61 67 6d 61 73 20 61 72  known pragmas ar
e620: 65 20 69 67 6e 6f 72 65 64 2e 3c 2f 70 3e 0a 7d  e ignored.</p>.}
e630: 0a 0a 0a 53 65 63 74 69 6f 6e 20 52 45 50 4c 41  ...Section REPLA
e640: 43 45 20 72 65 70 6c 61 63 65 0a 0a 53 79 6e 74  CE replace..Synt
e650: 61 78 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e  ax {sql-statemen
e660: 74 7d 20 7b 0a 52 45 50 4c 41 43 45 20 49 4e 54  t} {.REPLACE INT
e670: 4f 20 5b 3c 64 61 74 61 62 61 73 65 2d 6e 61 6d  O [<database-nam
e680: 65 3e 20 2e 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d  e> .] <table-nam
e690: 65 3e 20 5b 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69  e> [( <column-li
e6a0: 73 74 3e 20 29 5d 20 56 41 4c 55 45 53 20 28 20  st> )] VALUES ( 
e6b0: 3c 76 61 6c 75 65 2d 6c 69 73 74 3e 20 29 20 7c  <value-list> ) |
e6c0: 0a 52 45 50 4c 41 43 45 20 49 4e 54 4f 20 5b 3c  .REPLACE INTO [<
e6d0: 64 61 74 61 62 61 73 65 2d 6e 61 6d 65 3e 20 2e  database-name> .
e6e0: 5d 20 3c 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b  ] <table-name> [
e6f0: 28 20 3c 63 6f 6c 75 6d 6e 2d 6c 69 73 74 3e 20  ( <column-list> 
e700: 29 5d 20 3c 73 65 6c 65 63 74 2d 73 74 61 74 65  )] <select-state
e710: 6d 65 6e 74 3e 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ment>.}..puts {.
e720: 3c 70 3e 54 68 65 20 52 45 50 4c 41 43 45 20 63  <p>The REPLACE c
e730: 6f 6d 6d 61 6e 64 20 69 73 20 61 6e 20 61 6c 69  ommand is an ali
e740: 61 73 20 66 6f 72 20 74 68 65 20 22 49 4e 53 45  as for the "INSE
e750: 52 54 20 4f 52 20 52 45 50 4c 41 43 45 22 20 76  RT OR REPLACE" v
e760: 61 72 69 61 6e 74 0a 6f 66 20 74 68 65 20 3c 61  ariant.of the <a
e770: 20 68 72 65 66 3d 22 23 69 6e 73 65 72 74 22 3e   href="#insert">
e780: 49 4e 53 45 52 54 3c 2f 61 3e 20 63 6f 6d 6d 61  INSERT</a> comma
e790: 6e 64 2e 20 20 54 68 69 73 20 61 6c 69 61 73 20  nd.  This alias 
e7a0: 69 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 0a  is provided for.
e7b0: 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69  compatibility wi
e7c0: 74 68 20 4d 79 53 51 4c 2e 20 20 53 65 65 20 74  th MySQL.  See t
e7d0: 68 65 20 0a 3c 61 20 68 72 65 66 3d 22 23 69 6e  he .<a href="#in
e7e0: 73 65 72 74 22 3e 49 4e 53 45 52 54 3c 2f 61 3e  sert">INSERT</a>
e7f0: 20 63 6f 6d 6d 61 6e 64 20 64 6f 63 75 6d 65 6e   command documen
e800: 74 61 74 69 6f 6e 20 66 6f 72 20 61 64 64 69 74  tation for addit
e810: 69 6f 6e 61 6c 0a 69 6e 66 6f 72 6d 61 74 69 6f  ional.informatio
e820: 6e 2e 3c 2f 70 3e 20 20 0a 7d 0a 0a 0a 53 65 63  n.</p>  .}...Sec
e830: 74 69 6f 6e 20 53 45 4c 45 43 54 20 73 65 6c 65  tion SELECT sele
e840: 63 74 0a 0a 53 79 6e 74 61 78 20 7b 73 71 6c 2d  ct..Syntax {sql-
e850: 73 74 61 74 65 6d 65 6e 74 7d 20 7b 0a 53 45 4c  statement} {.SEL
e860: 45 43 54 20 5b 41 4c 4c 20 7c 20 44 49 53 54 49  ECT [ALL | DISTI
e870: 4e 43 54 5d 20 3c 72 65 73 75 6c 74 3e 20 5b 46  NCT] <result> [F
e880: 52 4f 4d 20 3c 74 61 62 6c 65 2d 6c 69 73 74 3e  ROM <table-list>
e890: 5d 0a 5b 57 48 45 52 45 20 3c 65 78 70 72 3e 5d  ].[WHERE <expr>]
e8a0: 0a 5b 47 52 4f 55 50 20 42 59 20 3c 65 78 70 72  .[GROUP BY <expr
e8b0: 2d 6c 69 73 74 3e 5d 0a 5b 48 41 56 49 4e 47 20  -list>].[HAVING 
e8c0: 3c 65 78 70 72 3e 5d 0a 5b 3c 63 6f 6d 70 6f 75  <expr>].[<compou
e8d0: 6e 64 2d 6f 70 3e 20 3c 73 65 6c 65 63 74 3e 5d  nd-op> <select>]
e8e0: 2a 0a 5b 4f 52 44 45 52 20 42 59 20 3c 73 6f 72  *.[ORDER BY <sor
e8f0: 74 2d 65 78 70 72 2d 6c 69 73 74 3e 5d 0a 5b 4c  t-expr-list>].[L
e900: 49 4d 49 54 20 3c 69 6e 74 65 67 65 72 3e 20 5b  IMIT <integer> [
e910: 4c 50 20 4f 46 46 53 45 54 20 7c 20 2c 20 52 50  LP OFFSET | , RP
e920: 20 3c 69 6e 74 65 67 65 72 3e 5d 5d 0a 7d 20 7b   <integer>]].} {
e930: 72 65 73 75 6c 74 7d 20 7b 0a 3c 72 65 73 75 6c  result} {.<resul
e940: 74 2d 63 6f 6c 75 6d 6e 3e 20 5b 2c 20 3c 72 65  t-column> [, <re
e950: 73 75 6c 74 2d 63 6f 6c 75 6d 6e 3e 5d 2a 0a 7d  sult-column>]*.}
e960: 20 7b 72 65 73 75 6c 74 2d 63 6f 6c 75 6d 6e 7d   {result-column}
e970: 20 7b 0a 53 54 41 52 20 7c 20 3c 74 61 62 6c 65   {.STAR | <table
e980: 2d 6e 61 6d 65 3e 20 2e 20 53 54 41 52 20 7c 20  -name> . STAR | 
e990: 3c 65 78 70 72 3e 20 5b 20 5b 41 53 5d 20 3c 73  <expr> [ [AS] <s
e9a0: 74 72 69 6e 67 3e 20 5d 0a 7d 20 7b 74 61 62 6c  tring> ].} {tabl
e9b0: 65 2d 6c 69 73 74 7d 20 7b 0a 3c 74 61 62 6c 65  e-list} {.<table
e9c0: 3e 20 5b 3c 6a 6f 69 6e 2d 6f 70 3e 20 3c 74 61  > [<join-op> <ta
e9d0: 62 6c 65 3e 20 3c 6a 6f 69 6e 2d 61 72 67 73 3e  ble> <join-args>
e9e0: 5d 2a 0a 7d 20 7b 74 61 62 6c 65 7d 20 7b 0a 3c  ]*.} {table} {.<
e9f0: 74 61 62 6c 65 2d 6e 61 6d 65 3e 20 5b 41 53 20  table-name> [AS 
ea00: 3c 61 6c 69 61 73 3e 5d 20 7c 0a 28 20 3c 73 65  <alias>] |.( <se
ea10: 6c 65 63 74 3e 20 29 20 5b 41 53 20 3c 61 6c 69  lect> ) [AS <ali
ea20: 61 73 3e 5d 0a 7d 20 7b 6a 6f 69 6e 2d 6f 70 7d  as>].} {join-op}
ea30: 20 7b 0a 2c 20 7c 20 5b 4e 41 54 55 52 41 4c 5d   {., | [NATURAL]
ea40: 20 5b 4c 45 46 54 20 7c 20 52 49 47 48 54 20 7c   [LEFT | RIGHT |
ea50: 20 46 55 4c 4c 5d 20 5b 4f 55 54 45 52 20 7c 20   FULL] [OUTER | 
ea60: 49 4e 4e 45 52 20 7c 20 43 52 4f 53 53 5d 20 4a  INNER | CROSS] J
ea70: 4f 49 4e 0a 7d 20 7b 6a 6f 69 6e 2d 61 72 67 73  OIN.} {join-args
ea80: 7d 20 7b 0a 5b 4f 4e 20 3c 65 78 70 72 3e 5d 20  } {.[ON <expr>] 
ea90: 5b 55 53 49 4e 47 20 28 20 3c 69 64 2d 6c 69 73  [USING ( <id-lis
eaa0: 74 3e 20 29 5d 0a 7d 20 7b 73 6f 72 74 2d 65 78  t> )].} {sort-ex
eab0: 70 72 2d 6c 69 73 74 7d 20 7b 0a 3c 65 78 70 72  pr-list} {.<expr
eac0: 3e 20 5b 3c 73 6f 72 74 2d 6f 72 64 65 72 3e 5d  > [<sort-order>]
ead0: 20 5b 2c 20 3c 65 78 70 72 3e 20 5b 3c 73 6f 72   [, <expr> [<sor
eae0: 74 2d 6f 72 64 65 72 3e 5d 5d 2a 0a 7d 20 7b 73  t-order>]]*.} {s
eaf0: 6f 72 74 2d 6f 72 64 65 72 7d 20 7b 0a 41 53 43  ort-order} {.ASC
eb00: 20 7c 20 44 45 53 43 0a 7d 20 7b 63 6f 6d 70 6f   | DESC.} {compo
eb10: 75 6e 64 5f 6f 70 7d 20 7b 0a 55 4e 49 4f 4e 20  und_op} {.UNION 
eb20: 7c 20 55 4e 49 4f 4e 20 41 4c 4c 20 7c 20 49 4e  | UNION ALL | IN
eb30: 54 45 52 53 45 43 54 20 7c 20 45 58 43 45 50 54  TERSECT | EXCEPT
eb40: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
eb50: 65 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  e SELECT stateme
eb60: 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 71 75  nt is used to qu
eb70: 65 72 79 20 74 68 65 20 64 61 74 61 62 61 73 65  ery the database
eb80: 2e 20 20 54 68 65 0a 72 65 73 75 6c 74 20 6f 66  .  The.result of
eb90: 20 61 20 53 45 4c 45 43 54 20 69 73 20 7a 65 72   a SELECT is zer
eba0: 6f 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73 20 6f  o or more rows o
ebb0: 66 20 64 61 74 61 20 77 68 65 72 65 20 65 61 63  f data where eac
ebc0: 68 20 72 6f 77 0a 68 61 73 20 61 20 66 69 78 65  h row.has a fixe
ebd0: 64 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c 75  d number of colu
ebe0: 6d 6e 73 2e 20 20 54 68 65 20 6e 75 6d 62 65 72  mns.  The number
ebf0: 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74   of columns in t
ec00: 68 65 0a 72 65 73 75 6c 74 20 69 73 20 73 70 65  he.result is spe
ec10: 63 69 66 69 65 64 20 62 79 20 74 68 65 20 65 78  cified by the ex
ec20: 70 72 65 73 73 69 6f 6e 20 6c 69 73 74 20 69 6e  pression list in
ec30: 20 62 65 74 77 65 65 6e 20 74 68 65 0a 53 45 4c   between the.SEL
ec40: 45 43 54 20 61 6e 64 20 46 52 4f 4d 20 6b 65 79  ECT and FROM key
ec50: 77 6f 72 64 73 2e 20 20 41 6e 79 20 61 72 62 69  words.  Any arbi
ec60: 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e  trary expression
ec70: 20 63 61 6e 20 62 65 20 75 73 65 64 0a 61 73 20   can be used.as 
ec80: 61 20 72 65 73 75 6c 74 2e 20 20 49 66 20 61 20  a result.  If a 
ec90: 72 65 73 75 6c 74 20 65 78 70 72 65 73 73 69 6f  result expressio
eca0: 6e 20 69 73 20 7d 0a 70 75 74 73 20 22 5b 4f 70  n is }.puts "[Op
ecb0: 65 72 61 74 6f 72 20 2a 5d 20 74 68 65 6e 20 61  erator *] then a
ecc0: 6c 6c 20 63 6f 6c 75 6d 6e 73 20 6f 66 20 61 6c  ll columns of al
ecd0: 6c 20 74 61 62 6c 65 73 20 61 72 65 20 73 75 62  l tables are sub
ece0: 73 74 69 74 75 74 65 64 22 0a 70 75 74 73 20 7b  stituted".puts {
ecf0: 66 6f 72 20 74 68 61 74 20 6f 6e 65 20 65 78 70  for that one exp
ed00: 72 65 73 73 69 6f 6e 2e 20 20 49 66 20 74 68 65  ression.  If the
ed10: 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 74   expression is t
ed20: 68 65 20 6e 61 6d 65 20 6f 66 7d 0a 70 75 74 73  he name of}.puts
ed30: 20 22 61 20 74 61 62 6c 65 20 66 6f 6c 6c 6f 77   "a table follow
ed40: 65 64 20 62 79 20 5b 4f 70 65 72 61 74 6f 72 20  ed by [Operator 
ed50: 2e 2a 5d 20 74 68 65 6e 20 74 68 65 20 72 65 73  .*] then the res
ed60: 75 6c 74 20 69 73 20 61 6c 6c 20 63 6f 6c 75 6d  ult is all colum
ed70: 6e 73 22 0a 70 75 74 73 20 7b 69 6e 20 74 68 61  ns".puts {in tha
ed80: 74 20 6f 6e 65 20 74 61 62 6c 65 2e 3c 2f 70 3e  t one table.</p>
ed90: 0a 0a 3c 70 3e 54 68 65 20 44 49 53 54 49 4e 43  ..<p>The DISTINC
eda0: 54 20 6b 65 79 77 6f 72 64 20 63 61 75 73 65 73  T keyword causes
edb0: 20 61 20 73 75 62 73 65 74 20 6f 66 20 72 65 73   a subset of res
edc0: 75 6c 74 20 72 6f 77 73 20 74 6f 20 62 65 20 72  ult rows to be r
edd0: 65 74 75 72 6e 65 64 2c 20 0a 69 6e 20 77 68 69  eturned, .in whi
ede0: 63 68 20 65 61 63 68 20 72 65 73 75 6c 74 20 72  ch each result r
edf0: 6f 77 20 69 73 20 64 69 66 66 65 72 65 6e 74 2e  ow is different.
ee00: 20 20 4e 55 4c 4c 20 76 61 6c 75 65 73 20 61 72    NULL values ar
ee10: 65 20 6e 6f 74 20 74 72 65 61 74 65 64 20 61 73  e not treated as
ee20: 20 0a 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20   .distinct from 
ee30: 65 61 63 68 6f 74 68 65 72 2e 20 20 54 68 65 20  eachother.  The 
ee40: 64 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72  default behavior
ee50: 20 69 73 20 74 68 61 74 20 61 6c 6c 20 72 65 73   is that all res
ee60: 75 6c 74 20 72 6f 77 73 20 0a 62 65 20 72 65 74  ult rows .be ret
ee70: 75 72 6e 65 64 2c 20 77 68 69 63 68 20 63 61 6e  urned, which can
ee80: 20 62 65 20 6d 61 64 65 20 65 78 70 6c 69 63 69   be made explici
ee90: 74 20 77 69 74 68 20 74 68 65 20 6b 65 79 77 6f  t with the keywo
eea0: 72 64 20 41 4c 4c 2e 3c 2f 70 3e 0a 0a 3c 70 3e  rd ALL.</p>..<p>
eeb0: 54 68 65 20 71 75 65 72 79 20 69 73 20 65 78 65  The query is exe
eec0: 63 75 74 65 64 20 61 67 61 69 6e 73 74 20 6f 6e  cuted against on
eed0: 65 20 6f 72 20 6d 6f 72 65 20 74 61 62 6c 65 73  e or more tables
eee0: 20 73 70 65 63 69 66 69 65 64 20 61 66 74 65 72   specified after
eef0: 0a 74 68 65 20 46 52 4f 4d 20 6b 65 79 77 6f 72  .the FROM keywor
ef00: 64 2e 20 20 49 66 20 6d 75 6c 74 69 70 6c 65 20  d.  If multiple 
ef10: 74 61 62 6c 65 73 20 6e 61 6d 65 73 20 61 72 65  tables names are
ef20: 20 73 65 70 61 72 61 74 65 64 20 62 79 20 63 6f   separated by co
ef30: 6d 6d 61 73 2c 0a 74 68 65 6e 20 74 68 65 20 71  mmas,.then the q
ef40: 75 65 72 79 20 69 73 20 61 67 61 69 6e 73 74 20  uery is against 
ef50: 74 68 65 20 63 72 6f 73 73 20 6a 6f 69 6e 20 6f  the cross join o
ef60: 66 20 74 68 65 20 76 61 72 69 6f 75 73 20 74 61  f the various ta
ef70: 62 6c 65 73 2e 0a 54 68 65 20 66 75 6c 6c 20 53  bles..The full S
ef80: 51 4c 2d 39 32 20 6a 6f 69 6e 20 73 79 6e 74 61  QL-92 join synta
ef90: 78 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73  x can also be us
efa0: 65 64 20 74 6f 20 73 70 65 63 69 66 79 20 6a 6f  ed to specify jo
efb0: 69 6e 73 2e 0a 41 20 73 75 62 2d 71 75 65 72 79  ins..A sub-query
efc0: 0a 69 6e 20 70 61 72 65 6e 74 68 65 73 65 73 20  .in parentheses 
efd0: 6d 61 79 20 62 65 20 73 75 62 73 74 69 74 75 74  may be substitut
efe0: 65 64 20 66 6f 72 20 61 6e 79 20 74 61 62 6c 65  ed for any table
eff0: 20 6e 61 6d 65 20 69 6e 20 74 68 65 20 46 52 4f   name in the FRO
f000: 4d 20 63 6c 61 75 73 65 2e 0a 54 68 65 20 65 6e  M clause..The en
f010: 74 69 72 65 20 46 52 4f 4d 20 63 6c 61 75 73 65  tire FROM clause
f020: 20 6d 61 79 20 62 65 20 6f 6d 69 74 74 65 64 2c   may be omitted,
f030: 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74   in which case t
f040: 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 0a 73  he result is a.s
f050: 69 6e 67 6c 65 20 72 6f 77 20 63 6f 6e 73 69 73  ingle row consis
f060: 74 69 6e 67 20 6f 66 20 74 68 65 20 76 61 6c 75  ting of the valu
f070: 65 73 20 6f 66 20 74 68 65 20 65 78 70 72 65 73  es of the expres
f080: 73 69 6f 6e 20 6c 69 73 74 2e 0a 3c 2f 70 3e 0a  sion list..</p>.
f090: 0a 3c 70 3e 54 68 65 20 57 48 45 52 45 20 63 6c  .<p>The WHERE cl
f0a0: 61 75 73 65 20 63 61 6e 20 62 65 20 75 73 65 64  ause can be used
f0b0: 20 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 6e 75   to limit the nu
f0c0: 6d 62 65 72 20 6f 66 20 72 6f 77 73 20 6f 76 65  mber of rows ove
f0d0: 72 0a 77 68 69 63 68 20 74 68 65 20 71 75 65 72  r.which the quer
f0e0: 79 20 6f 70 65 72 61 74 65 73 2e 3c 2f 70 3e 0a  y operates.</p>.
f0f0: 0a 3c 70 3e 54 68 65 20 47 52 4f 55 50 20 42 59  .<p>The GROUP BY
f100: 20 63 6c 61 75 73 65 73 20 63 61 75 73 65 73 20   clauses causes 
f110: 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 72 6f 77 73  one or more rows
f120: 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 74   of the result t
f130: 6f 0a 62 65 20 63 6f 6d 62 69 6e 65 64 20 69 6e  o.be combined in
f140: 74 6f 20 61 20 73 69 6e 67 6c 65 20 72 6f 77 20  to a single row 
f150: 6f 66 20 6f 75 74 70 75 74 2e 20 20 54 68 69 73  of output.  This
f160: 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75   is especially u
f170: 73 65 66 75 6c 0a 77 68 65 6e 20 74 68 65 20 72  seful.when the r
f180: 65 73 75 6c 74 20 63 6f 6e 74 61 69 6e 73 20 61  esult contains a
f190: 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f  ggregate functio
f1a0: 6e 73 2e 20 20 54 68 65 20 65 78 70 72 65 73 73  ns.  The express
f1b0: 69 6f 6e 73 20 69 6e 0a 74 68 65 20 47 52 4f 55  ions in.the GROU
f1c0: 50 20 42 59 20 63 6c 61 75 73 65 20 64 6f 20 3c  P BY clause do <
f1d0: 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 68 61 76 65  em>not</em> have
f1e0: 20 74 6f 20 62 65 20 65 78 70 72 65 73 73 69 6f   to be expressio
f1f0: 6e 73 20 74 68 61 74 0a 61 70 70 65 61 72 20 69  ns that.appear i
f200: 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 20 20 54  n the result.  T
f210: 68 65 20 48 41 56 49 4e 47 20 63 6c 61 75 73 65  he HAVING clause
f220: 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 57   is similar to W
f230: 48 45 52 45 20 65 78 63 65 70 74 0a 74 68 61 74  HERE except.that
f240: 20 48 41 56 49 4e 47 20 61 70 70 6c 69 65 73 20   HAVING applies 
f250: 61 66 74 65 72 20 67 72 6f 75 70 69 6e 67 20 68  after grouping h
f260: 61 73 20 6f 63 63 75 72 72 65 64 2e 20 20 54 68  as occurred.  Th
f270: 65 20 48 41 56 49 4e 47 20 65 78 70 72 65 73 73  e HAVING express
f280: 69 6f 6e 0a 6d 61 79 20 72 65 66 65 72 20 74 6f  ion.may refer to
f290: 20 76 61 6c 75 65 73 2c 20 65 76 65 6e 20 61 67   values, even ag
f2a0: 67 72 65 67 61 74 65 20 66 75 6e 63 74 69 6f 6e  gregate function
f2b0: 73 2c 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20  s, that are not 
f2c0: 69 6e 20 74 68 65 20 72 65 73 75 6c 74 2e 3c 2f  in the result.</
f2d0: 70 3e 0a 0a 3c 70 3e 54 68 65 20 4f 52 44 45 52  p>..<p>The ORDER
f2e0: 20 42 59 20 63 6c 61 75 73 65 20 63 61 75 73 65   BY clause cause
f2f0: 73 20 74 68 65 20 6f 75 74 70 75 74 20 72 6f 77  s the output row
f300: 73 20 74 6f 20 62 65 20 73 6f 72 74 65 64 2e 20  s to be sorted. 
f310: 20 0a 54 68 65 20 61 72 67 75 6d 65 6e 74 20 74   .The argument t
f320: 6f 20 4f 52 44 45 52 20 42 59 20 69 73 20 61 20  o ORDER BY is a 
f330: 6c 69 73 74 20 6f 66 20 65 78 70 72 65 73 73 69  list of expressi
f340: 6f 6e 73 20 74 68 61 74 20 61 72 65 20 75 73 65  ons that are use
f350: 64 20 61 73 20 74 68 65 0a 6b 65 79 20 66 6f 72  d as the.key for
f360: 20 74 68 65 20 73 6f 72 74 2e 20 20 54 68 65 20   the sort.  The 
f370: 65 78 70 72 65 73 73 69 6f 6e 73 20 64 6f 20 6e  expressions do n
f380: 6f 74 20 68 61 76 65 20 74 6f 20 62 65 20 70 61  ot have to be pa
f390: 72 74 20 6f 66 20 74 68 65 0a 72 65 73 75 6c 74  rt of the.result
f3a0: 20 66 6f 72 20 61 20 73 69 6d 70 6c 65 20 53 45   for a simple SE
f3b0: 4c 45 43 54 2c 20 62 75 74 20 69 6e 20 61 20 63  LECT, but in a c
f3c0: 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54 20 65  ompound SELECT e
f3d0: 61 63 68 20 73 6f 72 74 0a 65 78 70 72 65 73 73  ach sort.express
f3e0: 69 6f 6e 20 6d 75 73 74 20 65 78 61 63 74 6c 79  ion must exactly
f3f0: 20 6d 61 74 63 68 20 6f 6e 65 20 6f 66 20 74 68   match one of th
f400: 65 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 73  e result columns
f410: 2e 20 20 45 61 63 68 0a 73 6f 72 74 20 65 78 70  .  Each.sort exp
f420: 72 65 73 73 69 6f 6e 20 6d 61 79 20 62 65 20 6f  ression may be o
f430: 70 74 69 6f 6e 61 6c 6c 79 20 66 6f 6c 6c 6f 77  ptionally follow
f440: 65 64 20 62 79 20 41 53 43 20 6f 72 20 44 45 53  ed by ASC or DES
f450: 43 20 74 6f 20 73 70 65 63 69 66 79 0a 74 68 65  C to specify.the
f460: 20 73 6f 72 74 20 6f 72 64 65 72 2e 3c 2f 70 3e   sort order.</p>
f470: 0a 0a 3c 70 3e 54 68 65 20 4c 49 4d 49 54 20 63  ..<p>The LIMIT c
f480: 6c 61 75 73 65 20 70 6c 61 63 65 73 20 61 6e 20  lause places an 
f490: 75 70 70 65 72 20 62 6f 75 6e 64 20 6f 6e 20 74  upper bound on t
f4a0: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 6f 77  he number of row
f4b0: 73 0a 72 65 74 75 72 6e 65 64 20 69 6e 20 74 68  s.returned in th
f4c0: 65 20 72 65 73 75 6c 74 2e 20 20 41 20 6e 65 67  e result.  A neg
f4d0: 61 74 69 76 65 20 4c 49 4d 49 54 20 69 6e 64 69  ative LIMIT indi
f4e0: 63 61 74 65 73 20 6e 6f 20 75 70 70 65 72 20 62  cates no upper b
f4f0: 6f 75 6e 64 2e 0a 54 68 65 20 6f 70 74 69 6f 6e  ound..The option
f500: 61 6c 20 4f 46 46 53 45 54 20 66 6f 6c 6c 6f 77  al OFFSET follow
f510: 69 6e 67 20 4c 49 4d 49 54 20 73 70 65 63 69 66  ing LIMIT specif
f520: 69 65 73 20 68 6f 77 20 6d 61 6e 79 0a 72 6f 77  ies how many.row
f530: 73 20 74 6f 20 73 6b 69 70 20 61 74 20 74 68 65  s to skip at the
f540: 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68   beginning of th
f550: 65 20 72 65 73 75 6c 74 20 73 65 74 2e 0a 49 6e  e result set..In
f560: 20 61 20 63 6f 6d 70 6f 75 6e 64 20 71 75 65 72   a compound quer
f570: 79 2c 20 74 68 65 20 4c 49 4d 49 54 20 63 6c 61  y, the LIMIT cla
f580: 75 73 65 20 6d 61 79 20 6f 6e 6c 79 20 61 70 70  use may only app
f590: 65 61 72 20 6f 6e 20 74 68 65 0a 66 69 6e 61 6c  ear on the.final
f5a0: 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e   SELECT statemen
f5b0: 74 2e 0a 54 68 65 20 6c 69 6d 69 74 20 69 73 20  t..The limit is 
f5c0: 61 70 70 6c 69 65 64 20 74 6f 20 74 68 65 20 65  applied to the e
f5d0: 6e 74 69 72 65 20 71 75 65 72 79 20 6e 6f 74 0a  ntire query not.
f5e0: 74 6f 20 74 68 65 20 69 6e 64 69 76 69 64 75 61  to the individua
f5f0: 6c 20 53 45 4c 45 43 54 20 73 74 61 74 65 6d 65  l SELECT stateme
f600: 6e 74 20 74 6f 20 77 68 69 63 68 20 69 74 20 69  nt to which it i
f610: 73 20 61 74 74 61 63 68 65 64 2e 0a 3c 2f 70 3e  s attached..</p>
f620: 0a 0a 3c 70 3e 41 20 63 6f 6d 70 6f 75 6e 64 20  ..<p>A compound 
f630: 53 45 4c 45 43 54 20 69 73 20 66 6f 72 6d 65 64  SELECT is formed
f640: 20 66 72 6f 6d 20 74 77 6f 20 6f 72 20 6d 6f 72   from two or mor
f650: 65 20 73 69 6d 70 6c 65 20 53 45 4c 45 43 54 73  e simple SELECTs
f660: 20 63 6f 6e 6e 65 63 74 65 64 0a 62 79 20 6f 6e   connected.by on
f670: 65 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 6f  e of the operato
f680: 72 73 20 55 4e 49 4f 4e 2c 20 55 4e 49 4f 4e 20  rs UNION, UNION 
f690: 41 4c 4c 2c 20 49 4e 54 45 52 53 45 43 54 2c 20  ALL, INTERSECT, 
f6a0: 6f 72 20 45 58 43 45 50 54 2e 20 20 49 6e 0a 61  or EXCEPT.  In.a
f6b0: 20 63 6f 6d 70 6f 75 6e 64 20 53 45 4c 45 43 54   compound SELECT
f6c0: 2c 20 61 6c 6c 20 74 68 65 20 63 6f 6e 73 74 69  , all the consti
f6d0: 74 75 65 6e 74 20 53 45 4c 45 43 54 73 20 6d 75  tuent SELECTs mu
f6e0: 73 74 20 73 70 65 63 69 66 79 20 74 68 65 0a 73  st specify the.s
f6f0: 61 6d 65 20 6e 75 6d 62 65 72 20 6f 66 20 72 65  ame number of re
f700: 73 75 6c 74 20 63 6f 6c 75 6d 6e 73 2e 20 20 54  sult columns.  T
f710: 68 65 72 65 20 6d 61 79 20 62 65 20 6f 6e 6c 79  here may be only
f720: 20 61 20 73 69 6e 67 6c 65 20 4f 52 44 45 52 20   a single ORDER 
f730: 42 59 0a 63 6c 61 75 73 65 20 61 74 20 74 68 65  BY.clause at the
f740: 20 65 6e 64 20 6f 66 20 74 68 65 20 63 6f 6d 70   end of the comp
f750: 6f 75 6e 64 20 53 45 4c 45 43 54 2e 20 20 54 68  ound SELECT.  Th
f760: 65 20 55 4e 49 4f 4e 20 61 6e 64 20 55 4e 49 4f  e UNION and UNIO
f770: 4e 20 41 4c 4c 0a 6f 70 65 72 61 74 6f 72 73 20  N ALL.operators 
f780: 63 6f 6d 62 69 6e 65 20 74 68 65 20 72 65 73 75  combine the resu
f790: 6c 74 73 20 6f 66 20 74 68 65 20 53 45 4c 45 43  lts of the SELEC
f7a0: 54 73 20 74 6f 20 74 68 65 20 72 69 67 68 74 20  Ts to the right 
f7b0: 61 6e 64 20 6c 65 66 74 20 69 6e 74 6f 0a 61 20  and left into.a 
f7c0: 73 69 6e 67 6c 65 20 62 69 67 20 74 61 62 6c 65  single big table
f7d0: 2e 20 20 54 68 65 20 64 69 66 66 65 72 65 6e 63  .  The differenc
f7e0: 65 20 69 73 20 74 68 61 74 20 69 6e 20 55 4e 49  e is that in UNI
f7f0: 4f 4e 20 61 6c 6c 20 72 65 73 75 6c 74 20 72 6f  ON all result ro
f800: 77 73 0a 61 72 65 20 64 69 73 74 69 6e 63 74 20  ws.are distinct 
f810: 77 68 65 72 65 20 69 6e 20 55 4e 49 4f 4e 20 41  where in UNION A
f820: 4c 4c 20 74 68 65 72 65 20 6d 61 79 20 62 65 20  LL there may be 
f830: 64 75 70 6c 69 63 61 74 65 73 2e 0a 54 68 65 20  duplicates..The 
f840: 49 4e 54 45 52 53 45 43 54 20 6f 70 65 72 61 74  INTERSECT operat
f850: 6f 72 20 74 61 6b 65 73 20 74 68 65 20 69 6e 74  or takes the int
f860: 65 72 73 65 63 74 69 6f 6e 20 6f 66 20 74 68 65  ersection of the
f870: 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 0a   results of the.
f880: 6c 65 66 74 20 61 6e 64 20 72 69 67 68 74 20 53  left and right S
f890: 45 4c 45 43 54 73 2e 20 20 45 58 43 45 50 54 20  ELECTs.  EXCEPT 
f8a0: 74 61 6b 65 73 20 74 68 65 20 72 65 73 75 6c 74  takes the result
f8b0: 20 6f 66 20 6c 65 66 74 20 53 45 4c 45 43 54 20   of left SELECT 
f8c0: 61 66 74 65 72 0a 72 65 6d 6f 76 69 6e 67 20 74  after.removing t
f8d0: 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68  he results of th
f8e0: 65 20 72 69 67 68 74 20 53 45 4c 45 43 54 2e 20  e right SELECT. 
f8f0: 20 57 68 65 6e 20 74 68 72 65 65 20 61 72 65 20   When three are 
f900: 6d 6f 72 65 20 53 45 4c 45 43 54 73 0a 61 72 65  more SELECTs.are
f910: 20 63 6f 6e 6e 65 63 74 65 64 20 69 6e 74 6f 20   connected into 
f920: 61 20 63 6f 6d 70 6f 75 6e 64 2c 20 74 68 65 79  a compound, they
f930: 20 67 72 6f 75 70 20 66 72 6f 6d 20 6c 65 66 74   group from left
f940: 20 74 6f 20 72 69 67 68 74 2e 3c 2f 70 3e 0a 7d   to right.</p>.}
f950: 0a 0a 0a 53 65 63 74 69 6f 6e 20 55 50 44 41 54  ...Section UPDAT
f960: 45 20 75 70 64 61 74 65 0a 0a 53 79 6e 74 61 78  E update..Syntax
f970: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
f980: 20 7b 0a 55 50 44 41 54 45 20 5b 20 4f 52 20 3c   {.UPDATE [ OR <
f990: 63 6f 6e 66 6c 69 63 74 2d 61 6c 67 6f 72 69 74  conflict-algorit
f9a0: 68 6d 3e 20 5d 20 5b 3c 64 61 74 61 62 61 73 65  hm> ] [<database
f9b0: 2d 6e 61 6d 65 3e 20 2e 5d 20 3c 74 61 62 6c 65  -name> .] <table
f9c0: 2d 6e 61 6d 65 3e 0a 53 45 54 20 3c 61 73 73 69  -name>.SET <assi
f9d0: 67 6e 6d 65 6e 74 3e 20 5b 2c 20 3c 61 73 73 69  gnment> [, <assi
f9e0: 67 6e 6d 65 6e 74 3e 5d 2a 0a 5b 57 48 45 52 45  gnment>]*.[WHERE
f9f0: 20 3c 65 78 70 72 3e 5d 0a 7d 20 7b 61 73 73 69   <expr>].} {assi
fa00: 67 6e 6d 65 6e 74 7d 20 7b 0a 3c 63 6f 6c 75 6d  gnment} {.<colum
fa10: 6e 2d 6e 61 6d 65 3e 20 3d 20 3c 65 78 70 72 3e  n-name> = <expr>
fa20: 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54 68  .}..puts {.<p>Th
fa30: 65 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65  e UPDATE stateme
fa40: 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 63 68  nt is used to ch
fa50: 61 6e 67 65 20 74 68 65 20 76 61 6c 75 65 20 6f  ange the value o
fa60: 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 0a 73 65  f columns in .se
fa70: 6c 65 63 74 65 64 20 72 6f 77 73 20 6f 66 20 61  lected rows of a
fa80: 20 74 61 62 6c 65 2e 20 20 45 61 63 68 20 61 73   table.  Each as
fa90: 73 69 67 6e 6d 65 6e 74 20 69 6e 20 61 6e 20 55  signment in an U
faa0: 50 44 41 54 45 20 73 70 65 63 69 66 69 65 73 0a  PDATE specifies.
fab0: 61 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 6f  a column name to
fac0: 20 74 68 65 20 6c 65 66 74 20 6f 66 20 74 68 65   the left of the
fad0: 20 65 71 75 61 6c 73 20 73 69 67 6e 20 61 6e 64   equals sign and
fae0: 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 65 78   an arbitrary ex
faf0: 70 72 65 73 73 69 6f 6e 0a 74 6f 20 74 68 65 20  pression.to the 
fb00: 72 69 67 68 74 2e 20 20 54 68 65 20 65 78 70 72  right.  The expr
fb10: 65 73 73 69 6f 6e 73 20 6d 61 79 20 75 73 65 20  essions may use 
fb20: 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 6f 74  the values of ot
fb30: 68 65 72 20 63 6f 6c 75 6d 6e 73 2e 0a 41 6c 6c  her columns..All
fb40: 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65   expressions are
fb50: 20 65 76 61 6c 75 61 74 65 64 20 62 65 66 6f 72   evaluated befor
fb60: 65 20 61 6e 79 20 61 73 73 69 67 6e 6d 65 6e 74  e any assignment
fb70: 73 20 61 72 65 20 6d 61 64 65 2e 0a 41 20 57 48  s are made..A WH
fb80: 45 52 45 20 63 6c 61 75 73 65 20 63 61 6e 20 62  ERE clause can b
fb90: 65 20 75 73 65 64 20 74 6f 20 72 65 73 74 72 69  e used to restri
fba0: 63 74 20 77 68 69 63 68 20 72 6f 77 73 20 61 72  ct which rows ar
fbb0: 65 20 75 70 64 61 74 65 64 2e 3c 2f 70 3e 0a 0a  e updated.</p>..
fbc0: 3c 70 3e 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20  <p>The optional 
fbd0: 63 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20  conflict-clause 
fbe0: 61 6c 6c 6f 77 73 20 74 68 65 20 73 70 65 63 69  allows the speci
fbf0: 66 69 63 61 74 69 6f 6e 20 6f 66 20 61 6e 20 61  fication of an a
fc00: 6c 74 65 72 6e 61 74 69 76 65 0a 63 6f 6e 73 74  lternative.const
fc10: 72 61 69 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72  raint conflict r
fc20: 65 73 6f 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69  esolution algori
fc30: 74 68 6d 20 74 6f 20 75 73 65 20 64 75 72 69 6e  thm to use durin
fc40: 67 20 74 68 69 73 20 6f 6e 65 20 63 6f 6d 6d 61  g this one comma
fc50: 6e 64 2e 0a 53 65 65 20 74 68 65 20 73 65 63 74  nd..See the sect
fc60: 69 6f 6e 20 74 69 74 6c 65 64 0a 3c 61 20 68 72  ion titled.<a hr
fc70: 65 66 3d 22 23 63 6f 6e 66 6c 69 63 74 22 3e 4f  ef="#conflict">O
fc80: 4e 20 43 4f 4e 46 4c 49 43 54 3c 2f 61 3e 20 66  N CONFLICT</a> f
fc90: 6f 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 69 6e  or additional in
fca0: 66 6f 72 6d 61 74 69 6f 6e 2e 3c 2f 70 3e 0a 7d  formation.</p>.}
fcb0: 0a 0a 0a 53 65 63 74 69 6f 6e 20 56 41 43 55 55  ...Section VACUU
fcc0: 4d 20 76 61 63 75 75 6d 0a 0a 53 79 6e 74 61 78  M vacuum..Syntax
fcd0: 20 7b 73 71 6c 2d 73 74 61 74 65 6d 65 6e 74 7d   {sql-statement}
fce0: 20 7b 0a 56 41 43 55 55 4d 20 5b 3c 69 6e 64 65   {.VACUUM [<inde
fcf0: 78 2d 6f 72 2d 74 61 62 6c 65 2d 6e 61 6d 65 3e  x-or-table-name>
fd00: 5d 0a 7d 0a 0a 70 75 74 73 20 7b 0a 3c 70 3e 54  ].}..puts {.<p>T
fd10: 68 65 20 56 41 43 55 55 4d 20 63 6f 6d 6d 61 6e  he VACUUM comman
fd20: 64 20 69 73 20 61 6e 20 53 51 4c 69 74 65 20 65  d is an SQLite e
fd30: 78 74 65 6e 73 69 6f 6e 20 6d 6f 64 65 6c 6c 65  xtension modelle
fd40: 64 20 61 66 74 65 72 20 61 20 73 69 6d 69 6c 61  d after a simila
fd50: 72 0a 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20  r.command found 
fd60: 69 6e 20 50 6f 73 74 67 72 65 53 51 4c 2e 20 20  in PostgreSQL.  
fd70: 49 66 20 56 41 43 55 55 4d 20 69 73 20 69 6e 76  If VACUUM is inv
fd80: 6f 6b 65 64 20 77 69 74 68 20 74 68 65 20 6e 61  oked with the na
fd90: 6d 65 20 6f 66 20 61 0a 74 61 62 6c 65 20 6f 72  me of a.table or
fda0: 20 69 6e 64 65 78 20 74 68 65 6e 20 69 74 20 69   index then it i
fdb0: 73 20 73 75 70 70 6f 73 65 20 74 6f 20 63 6c 65  s suppose to cle
fdc0: 61 6e 20 75 70 20 74 68 65 20 6e 61 6d 65 64 20  an up the named 
fdd0: 74 61 62 6c 65 20 6f 72 20 69 6e 64 65 78 2e 0a  table or index..
fde0: 49 6e 20 76 65 72 73 69 6f 6e 20 31 2e 30 20 6f  In version 1.0 o
fdf0: 66 20 53 51 4c 69 74 65 2c 20 74 68 65 20 56 41  f SQLite, the VA
fe00: 43 55 55 4d 20 63 6f 6d 6d 61 6e 64 20 77 6f 75  CUUM command wou
fe10: 6c 64 20 69 6e 76 6f 6b 65 20 0a 3c 62 3e 67 64  ld invoke .<b>gd
fe20: 62 6d 5f 72 65 6f 72 67 61 6e 69 7a 65 28 29 3c  bm_reorganize()<
fe30: 2f 62 3e 20 74 6f 20 63 6c 65 61 6e 20 75 70 20  /b> to clean up 
fe40: 74 68 65 20 62 61 63 6b 65 6e 64 20 64 61 74 61  the backend data
fe50: 62 61 73 65 20 66 69 6c 65 2e 3c 2f 70 3e 0a 0a  base file.</p>..
fe60: 3c 70 3e 0a 56 41 43 55 55 4d 20 62 65 63 61 6d  <p>.VACUUM becam
fe70: 65 20 61 20 6e 6f 2d 6f 70 20 77 68 65 6e 20 74  e a no-op when t
fe80: 68 65 20 47 44 42 4d 20 62 61 63 6b 65 6e 64 20  he GDBM backend 
fe90: 77 61 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d  was removed from
fea0: 0a 53 51 4c 49 54 45 20 69 6e 20 76 65 72 73 69  .SQLITE in versi
feb0: 6f 6e 20 32 2e 30 2e 30 2e 0a 56 41 43 55 55 4d  on 2.0.0..VACUUM
fec0: 20 77 61 73 20 72 65 69 6d 70 6c 69 6d 65 6e 74   was reimpliment
fed0: 65 64 20 69 6e 20 76 65 72 73 69 6f 6e 20 32 2e  ed in version 2.
fee0: 38 2e 31 2e 0a 54 68 65 20 69 6e 64 65 78 20 6f  8.1..The index o
fef0: 72 20 74 61 62 6c 65 20 6e 61 6d 65 20 61 72 67  r table name arg
ff00: 75 6d 65 6e 74 20 69 73 20 6e 6f 77 20 69 67 6e  ument is now ign
ff10: 6f 72 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 57  ored..</p>..<p>W
ff20: 68 65 6e 20 61 6e 20 6f 62 6a 65 63 74 20 28 74  hen an object (t
ff30: 61 62 6c 65 2c 20 69 6e 64 65 78 2c 20 6f 72 20  able, index, or 
ff40: 74 72 69 67 67 65 72 29 20 69 73 20 64 72 6f 70  trigger) is drop
ff50: 70 65 64 20 66 72 6f 6d 20 74 68 65 20 0a 64 61  ped from the .da
ff60: 74 61 62 61 73 65 2c 20 69 74 20 6c 65 61 76 65  tabase, it leave
ff70: 73 20 62 65 68 69 6e 64 20 65 6d 70 74 79 20 73  s behind empty s
ff80: 70 61 63 65 2e 20 20 54 68 69 73 20 6d 61 6b 65  pace.  This make
ff90: 73 20 74 68 65 20 64 61 74 61 62 61 73 65 20 0a  s the database .
ffa0: 66 69 6c 65 20 6c 61 72 67 65 72 20 74 68 61 6e  file larger than
ffb0: 20 69 74 20 6e 65 65 64 73 20 74 6f 20 62 65 2c   it needs to be,
ffc0: 20 62 75 74 20 63 61 6e 20 73 70 65 65 64 20 75   but can speed u
ffd0: 70 20 69 6e 73 65 72 74 73 2e 20 20 49 6e 20 74  p inserts.  In t
ffe0: 69 6d 65 20 0a 69 6e 73 65 72 74 73 20 61 6e 64  ime .inserts and
fff0: 20 64 65 6c 65 74 65 73 20 63 61 6e 20 6c 65 61   deletes can lea
10000 76 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20  ve the database 
10010 66 69 6c 65 20 73 74 72 75 63 74 75 72 65 20 66  file structure f
10020 72 61 67 6d 65 6e 74 65 64 2c 20 0a 77 68 69 63  ragmented, .whic
10030 68 20 73 6c 6f 77 73 20 64 6f 77 6e 20 64 69 73  h slows down dis
10040 6b 20 61 63 63 65 73 73 20 74 6f 20 74 68 65 20  k access to the 
10050 64 61 74 61 62 61 73 65 20 63 6f 6e 74 65 6e 74  database content
10060 73 2e 0a 0a 54 68 65 20 56 41 43 55 55 4d 20 63  s...The VACUUM c
10070 6f 6d 6d 61 6e 64 20 63 6c 65 61 6e 73 0a 74 68  ommand cleans.th
10080 65 20 64 61 74 61 62 61 73 65 20 62 79 20 63 6f  e database by co
10090 70 79 69 6e 67 20 69 74 73 20 63 6f 6e 74 65 6e  pying its conten
100a0 74 73 20 74 6f 20 61 20 74 65 6d 70 6f 72 61 72  ts to a temporar
100b0 79 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20  y database file 
100c0 61 6e 64 20 0a 72 65 6c 6f 61 64 69 6e 67 20 74  and .reloading t
100d0 68 65 20 6f 72 69 67 69 6e 61 6c 20 64 61 74 61  he original data
100e0 62 61 73 65 20 66 69 6c 65 20 66 72 6f 6d 20 74  base file from t
100f0 68 65 20 63 6f 70 79 2e 20 20 54 68 69 73 20 65  he copy.  This e
10100 6c 69 6d 69 6e 61 74 65 73 20 0a 66 72 65 65 20  liminates .free 
10110 70 61 67 65 73 2c 20 20 61 6c 69 67 6e 73 20 74  pages,  aligns t
10120 61 62 6c 65 20 64 61 74 61 20 74 6f 20 62 65 20  able data to be 
10130 63 6f 6e 74 69 67 75 6f 75 73 2c 20 61 6e 64 20  contiguous, and 
10140 6f 74 68 65 72 77 69 73 65 20 63 6c 65 61 6e 73  otherwise cleans
10150 20 0a 75 70 20 74 68 65 20 64 61 74 61 62 61 73   .up the databas
10160 65 20 66 69 6c 65 20 73 74 72 75 63 74 75 72 65  e file structure
10170 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 69 73 20 63  .</p>..<p>This c
10180 6f 6d 6d 61 6e 64 20 77 69 6c 6c 20 66 61 69 6c  ommand will fail
10190 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e 20   if there is an 
101a0 61 63 74 69 76 65 20 74 72 61 6e 73 61 63 74 69  active transacti
101b0 6f 6e 2e 20 20 54 68 69 73 20 0a 63 6f 6d 6d 61  on.  This .comma
101c0 6e 64 20 68 61 73 20 6e 6f 20 65 66 66 65 63 74  nd has no effect
101d0 20 6f 6e 20 61 6e 20 69 6e 2d 6d 65 6d 6f 72 79   on an in-memory
101e0 20 64 61 74 61 62 61 73 65 2e 3c 2f 70 3e 0a 7d   database.</p>.}
101f0 0a 0a 0a 53 65 63 74 69 6f 6e 20 7b 53 51 4c 69  ...Section {SQLi
10200 74 65 20 6b 65 79 77 6f 72 64 73 7d 20 6b 65 79  te keywords} key
10210 77 6f 72 64 73 0a 0a 70 75 74 73 20 7b 0a 3c 70  words..puts {.<p
10220 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6b  >The following k
10230 65 79 77 6f 72 64 73 20 61 72 65 20 75 73 65 64  eywords are used
10240 20 62 79 20 53 51 4c 69 74 65 2e 20 20 4d 6f 73   by SQLite.  Mos
10250 74 20 61 72 65 20 65 69 74 68 65 72 20 72 65 73  t are either res
10260 65 72 76 65 64 20 0a 77 6f 72 64 73 20 69 6e 20  erved .words in 
10270 53 51 4c 2d 39 32 20 6f 72 20 77 65 72 65 20 6c  SQL-92 or were l
10280 69 73 74 65 64 20 61 73 20 70 6f 74 65 6e 74 69  isted as potenti
10290 61 6c 20 72 65 73 65 72 76 65 64 20 77 6f 72 64  al reserved word
102a0 73 2e 20 20 54 68 6f 73 65 20 77 68 69 63 68 20  s.  Those which 
102b0 0a 61 72 65 6e 27 74 20 61 72 65 20 73 68 6f 77  .aren't are show
102c0 6e 20 69 6e 20 69 74 61 6c 69 63 73 2e 20 20 4e  n in italics.  N
102d0 6f 74 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20  ot all of these 
102e0 77 6f 72 64 73 20 61 72 65 20 61 63 74 75 61 6c  words are actual
102f0 6c 79 20 75 73 65 64 0a 62 79 20 53 51 4c 69 74  ly used.by SQLit
10300 65 2e 20 20 4b 65 79 77 6f 72 64 73 20 61 72 65  e.  Keywords are
10310 20 6e 6f 74 20 72 65 73 65 72 76 65 64 20 69 6e   not reserved in
10320 20 53 51 4c 69 74 65 2e 20 20 41 6e 79 20 6b 65   SQLite.  Any ke
10330 79 77 6f 72 64 20 63 61 6e 20 62 65 20 75 73 65  yword can be use
10340 64 20 0a 61 73 20 61 6e 20 69 64 65 6e 74 69 66  d .as an identif
10350 69 65 72 20 66 6f 72 20 53 51 4c 69 74 65 20 6f  ier for SQLite o
10360 62 6a 65 63 74 73 20 28 63 6f 6c 75 6d 6e 73 2c  bjects (columns,
10370 20 64 61 74 61 62 61 73 65 73 2c 20 69 6e 64 65   databases, inde
10380 78 65 73 2c 20 74 61 62 6c 65 73 2c 20 0a 74 72  xes, tables, .tr
10390 69 67 67 65 72 73 2c 20 76 69 65 77 73 2c 20 2e  iggers, views, .
103a0 2e 2e 29 20 62 75 74 20 6d 75 73 74 20 67 65 6e  ..) but must gen
103b0 65 72 61 6c 6c 79 20 62 65 20 65 6e 63 6c 6f 73  erally be enclos
103c0 65 64 20 62 79 20 62 72 61 63 6b 65 74 73 20 6f  ed by brackets o
103d0 72 20 0a 71 75 6f 74 65 73 20 74 6f 20 61 76 6f  r .quotes to avo
103e0 69 64 20 63 6f 6e 66 75 73 69 6e 67 20 74 68 65  id confusing the
103f0 20 70 61 72 73 65 72 2e 20 20 4b 65 79 77 6f 72   parser.  Keywor
10400 64 20 6d 61 74 63 68 69 6e 67 20 69 6e 20 53 51  d matching in SQ
10410 4c 69 74 65 20 69 73 20 0a 63 61 73 65 2d 69 6e  Lite is .case-in
10420 73 65 6e 73 69 74 69 76 65 2e 3c 2f 70 3e 0a 0a  sensitive.</p>..
10430 3c 70 3e 4b 65 79 77 6f 72 64 73 20 63 61 6e 20  <p>Keywords can 
10440 62 65 20 75 73 65 64 20 61 73 20 69 64 65 6e 74  be used as ident
10450 69 66 69 65 72 73 20 69 6e 20 74 68 72 65 65 20  ifiers in three 
10460 77 61 79 73 3a 3c 2f 70 3e 0a 0a 3c 74 61 62 6c  ways:</p>..<tabl
10470 65 3e 0a 3c 74 72 3e 09 3c 74 64 20 77 69 64 74  e>.<tr>.<td widt
10480 68 3d 31 32 25 3e 20 27 6b 65 79 77 6f 72 64 27  h=12%> 'keyword'
10490 0a 09 3c 74 64 3e 49 6e 74 65 72 70 72 65 74 65  ..<td>Interprete
104a0 64 20 61 73 20 61 20 6c 69 74 65 72 61 6c 20 73  d as a literal s
104b0 74 72 69 6e 67 20 69 66 20 69 74 20 6f 63 63 75  tring if it occu
104c0 72 73 20 69 6e 20 61 20 6c 65 67 61 6c 20 73 74  rs in a legal st
104d0 72 69 6e 67 20 0a 09 63 6f 6e 74 65 78 74 2c 20  ring ..context, 
104e0 6f 74 68 65 72 77 69 73 65 20 61 73 20 61 6e 20  otherwise as an 
104f0 69 64 65 6e 74 69 66 69 65 72 2e 0a 3c 74 72 3e  identifier..<tr>
10500 09 3c 74 64 3e 20 22 6b 65 79 77 6f 72 64 22 0a  .<td> "keyword".
10510 09 3c 74 64 3e 49 6e 74 65 72 70 72 65 74 65 64  .<td>Interpreted
10520 20 61 73 20 61 6e 20 69 64 65 6e 74 69 66 69 65   as an identifie
10530 72 20 69 66 20 69 74 20 6d 61 74 63 68 65 73 20  r if it matches 
10540 61 20 6b 6e 6f 77 6e 20 69 64 65 6e 74 69 66 69  a known identifi
10550 65 72 20 0a 09 61 6e 64 20 6f 63 63 75 72 73 20  er ..and occurs 
10560 69 6e 20 61 20 6c 65 67 61 6c 20 69 64 65 6e 74  in a legal ident
10570 69 66 69 65 72 20 63 6f 6e 74 65 78 74 2c 20 6f  ifier context, o
10580 74 68 65 72 77 69 73 65 20 61 73 20 61 20 73 74  therwise as a st
10590 72 69 6e 67 2e 20 0a 3c 74 72 3e 09 3c 74 64 3e  ring. .<tr>.<td>
105a0 20 5b 6b 65 79 77 6f 72 64 5d 0a 09 3c 74 64 3e   [keyword]..<td>
105b0 20 41 6c 77 61 79 73 20 69 6e 74 65 72 70 72 65   Always interpre
105c0 74 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74 69  ted as an identi
105d0 66 65 72 2e 20 28 54 68 69 73 20 6e 6f 74 61 74  fer. (This notat
105e0 69 6f 6e 20 69 73 20 75 73 65 64 20 0a 09 62 79  ion is used ..by
105f0 20 4d 53 20 41 63 63 65 73 73 20 61 6e 64 20 53   MS Access and S
10600 51 4c 20 53 65 72 76 65 72 2e 29 0a 3c 2f 74 61  QL Server.).</ta
10610 62 6c 65 3e 0a 0a 3c 68 32 3e 46 61 6c 6c 62 61  ble>..<h2>Fallba
10620 63 6b 20 4b 65 79 77 6f 72 64 73 3c 2f 68 32 3e  ck Keywords</h2>
10630 0a 0a 3c 70 3e 54 68 65 73 65 20 6b 65 79 77 6f  ..<p>These keywo
10640 72 64 73 20 63 61 6e 20 62 65 20 75 73 65 64 20  rds can be used 
10650 61 73 20 69 64 65 6e 74 69 66 69 65 72 73 20 66  as identifiers f
10660 6f 72 20 53 51 4c 69 74 65 20 6f 62 6a 65 63 74  or SQLite object
10670 73 20 77 69 74 68 6f 75 74 20 0a 64 65 6c 69 6d  s without .delim
10680 69 74 65 72 73 2e 3c 2f 70 3e 0a 7d 0a 0a 70 72  iters.</p>.}..pr
10690 6f 63 20 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20  oc keyword_list 
106a0 7b 78 7d 20 7b 0a 20 20 70 75 74 73 20 22 3c 70  {x} {.  puts "<p
106b0 3e 22 0a 20 20 66 6f 72 65 61 63 68 20 6b 20 24  >".  foreach k $
106c0 78 20 7b 0a 20 20 20 20 69 66 20 7b 5b 73 74 72  x {.    if {[str
106d0 69 6e 67 20 69 6e 64 65 78 20 24 6b 20 30 5d 3d  ing index $k 0]=
106e0 3d 22 2a 22 7d 20 7b 0a 20 20 20 20 20 20 73 65  ="*"} {.      se
106f0 74 20 6e 6f 6e 73 74 61 6e 64 61 72 64 20 31 0a  t nonstandard 1.
10700 20 20 20 20 20 20 73 65 74 20 6b 20 5b 73 74 72        set k [str
10710 69 6e 67 20 72 61 6e 67 65 20 24 6b 20 31 20 65  ing range $k 1 e
10720 6e 64 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b  nd].    } else {
10730 0a 20 20 20 20 20 20 73 65 74 20 6e 6f 6e 73 74  .      set nonst
10740 61 6e 64 61 72 64 20 30 0a 20 20 20 20 7d 0a 20  andard 0.    }. 
10750 20 20 20 69 66 20 7b 24 6e 6f 6e 73 74 61 6e 64     if {$nonstand
10760 61 72 64 7d 20 7b 0a 20 20 20 20 20 20 70 75 74  ard} {.      put
10770 73 20 22 3c 69 3e 24 6b 3c 2f 69 3e 20 26 6e 62  s "<i>$k</i> &nb
10780 73 70 3b 26 6e 62 73 70 3b 22 0a 20 20 20 20 7d  sp;&nbsp;".    }
10790 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 70 75   else {.      pu
107a0 74 73 20 22 24 6b 20 26 6e 62 73 70 3b 26 6e 62  ts "$k &nbsp;&nb
107b0 73 70 3b 22 0a 20 20 20 20 7d 0a 20 20 7d 0a 20  sp;".    }.  }. 
107c0 20 70 75 74 73 20 22 3c 2f 70 3e 5c 6e 22 0a 7d   puts "</p>\n".}
107d0 0a 0a 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 7b  ..keyword_list {
107e0 0a 20 20 2a 41 42 4f 52 54 0a 20 20 41 46 54 45  .  *ABORT.  AFTE
107f0 52 0a 20 20 41 53 43 0a 20 20 2a 41 54 54 41 43  R.  ASC.  *ATTAC
10800 48 0a 20 20 42 45 46 4f 52 45 0a 20 20 42 45 47  H.  BEFORE.  BEG
10810 49 4e 0a 20 20 44 45 46 45 52 52 45 44 0a 20 20  IN.  DEFERRED.  
10820 43 41 53 43 41 44 45 20 0a 20 20 2a 43 4c 55 53  CASCADE .  *CLUS
10830 54 45 52 20 0a 20 20 2a 43 4f 4e 46 4c 49 43 54  TER .  *CONFLICT
10840 0a 20 20 2a 43 4f 50 59 0a 20 20 43 52 4f 53 53  .  *COPY.  CROSS
10850 0a 20 20 2a 44 41 54 41 42 41 53 45 0a 20 20 2a  .  *DATABASE.  *
10860 44 45 4c 49 4d 49 54 45 52 53 0a 20 20 44 45 53  DELIMITERS.  DES
10870 43 0a 20 20 2a 44 45 54 41 43 48 0a 20 20 45 41  C.  *DETACH.  EA
10880 43 48 0a 20 20 45 4e 44 0a 20 20 2a 45 58 50 4c  CH.  END.  *EXPL
10890 41 49 4e 0a 20 20 2a 46 41 49 4c 0a 20 20 46 4f  AIN.  *FAIL.  FO
108a0 52 0a 20 20 46 55 4c 4c 0a 20 20 49 47 4e 4f 52  R.  FULL.  IGNOR
108b0 45 0a 20 20 49 4d 4d 45 44 49 41 54 45 0a 20 20  E.  IMMEDIATE.  
108c0 49 4e 49 54 49 41 4c 4c 59 0a 20 20 49 4e 4e 45  INITIALLY.  INNE
108d0 52 0a 20 20 2a 49 4e 53 54 45 41 44 0a 20 20 4b  R.  *INSTEAD.  K
108e0 45 59 0a 20 20 4c 45 46 54 0a 20 20 4d 41 54 43  EY.  LEFT.  MATC
108f0 48 20 0a 20 20 4e 41 54 55 52 41 4c 0a 20 20 4f  H .  NATURAL.  O
10900 46 0a 20 20 2a 4f 46 46 53 45 54 0a 20 20 4f 55  F.  *OFFSET.  OU
10910 54 45 52 0a 20 20 2a 50 52 41 47 4d 41 0a 20 20  TER.  *PRAGMA.  
10920 2a 52 41 49 53 45 0a 20 20 2a 52 45 50 4c 41 43  *RAISE.  *REPLAC
10930 45 0a 20 20 52 45 53 54 52 49 43 54 0a 20 20 52  E.  RESTRICT.  R
10940 49 47 48 54 0a 20 20 2a 52 4f 57 0a 20 20 2a 53  IGHT.  *ROW.  *S
10950 54 41 54 45 4d 45 4e 54 0a 20 20 2a 54 45 4d 50  TATEMENT.  *TEMP
10960 0a 20 20 54 45 4d 50 4f 52 41 52 59 0a 20 20 54  .  TEMPORARY.  T
10970 52 49 47 47 45 52 20 0a 20 20 2a 56 41 43 55 55  RIGGER .  *VACUU
10980 4d 0a 20 20 56 49 45 57 0a 7d 0a 70 75 74 73 20  M.  VIEW.}.puts 
10990 7b 0a 0a 3c 68 32 3e 4e 6f 72 6d 61 6c 20 6b 65  {..<h2>Normal ke
109a0 79 77 6f 72 64 73 3c 2f 68 32 3e 0a 0a 3c 70 3e  ywords</h2>..<p>
109b0 54 68 65 73 65 20 6b 65 79 77 6f 72 64 73 20 63  These keywords c
109c0 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 69 64  an be used as id
109d0 65 6e 74 69 66 69 65 72 73 20 66 6f 72 20 53 51  entifiers for SQ
109e0 4c 69 74 65 20 6f 62 6a 65 63 74 73 2c 20 62 75  Lite objects, bu
109f0 74 20 0a 6d 75 73 74 20 62 65 20 65 6e 63 6c 6f  t .must be enclo
10a00 73 65 64 20 69 6e 20 62 72 61 63 6b 65 74 73 20  sed in brackets 
10a10 6f 72 20 71 75 6f 74 65 73 20 66 6f 72 20 53 51  or quotes for SQ
10a20 4c 69 74 65 20 74 6f 20 72 65 63 6f 67 6e 69 7a  Lite to recogniz
10a30 65 20 74 68 65 6d 20 61 73 20 0a 61 6e 20 69 64  e them as .an id
10a40 65 6e 74 69 66 69 65 72 2e 3c 2f 70 3e 0a 7d 0a  entifier.</p>.}.
10a50 0a 6b 65 79 77 6f 72 64 5f 6c 69 73 74 20 7b 0a  .keyword_list {.
10a60 20 20 41 4c 4c 0a 20 20 41 4e 44 0a 20 20 41 53    ALL.  AND.  AS
10a70 0a 20 20 42 45 54 57 45 45 4e 0a 20 20 42 59 0a  .  BETWEEN.  BY.
10a80 20 20 43 41 53 45 0a 20 20 43 48 45 43 4b 0a 20    CASE.  CHECK. 
10a90 20 43 4f 4c 4c 41 54 45 0a 20 20 43 4f 4d 4d 49   COLLATE.  COMMI
10aa0 54 0a 20 20 43 4f 4e 53 54 52 41 49 4e 54 0a 20  T.  CONSTRAINT. 
10ab0 20 43 52 45 41 54 45 20 0a 20 20 44 45 46 41 55   CREATE .  DEFAU
10ac0 4c 54 0a 20 20 44 45 46 45 52 52 41 42 4c 45 0a  LT.  DEFERRABLE.
10ad0 20 20 44 45 4c 45 54 45 0a 20 20 44 49 53 54 49    DELETE.  DISTI
10ae0 4e 43 54 0a 20 20 44 52 4f 50 0a 20 20 45 4c 53  NCT.  DROP.  ELS
10af0 45 0a 20 20 45 58 43 45 50 54 0a 20 20 46 4f 52  E.  EXCEPT.  FOR
10b00 45 49 47 4e 0a 20 20 46 52 4f 4d 20 0a 20 20 2a  EIGN.  FROM .  *
10b10 47 4c 4f 42 0a 20 20 47 52 4f 55 50 0a 20 20 48  GLOB.  GROUP.  H
10b20 41 56 49 4e 47 0a 20 20 49 4e 0a 20 20 2a 49 4e  AVING.  IN.  *IN
10b30 44 45 58 0a 20 20 49 4e 53 45 52 54 0a 20 20 49  DEX.  INSERT.  I
10b40 4e 54 45 52 53 45 43 54 0a 20 20 49 4e 54 4f 0a  NTERSECT.  INTO.
10b50 20 20 49 53 20 0a 20 20 2a 49 53 4e 55 4c 4c 0a    IS .  *ISNULL.
10b60 20 20 4a 4f 49 4e 0a 20 20 4c 49 4b 45 0a 20 20    JOIN.  LIKE.  
10b70 4c 49 4d 49 54 0a 20 20 4e 4f 54 0a 20 20 2a 4e  LIMIT.  NOT.  *N
10b80 4f 54 4e 55 4c 4c 0a 20 20 4e 55 4c 4c 0a 20 20  OTNULL.  NULL.  
10b90 4f 4e 0a 20 20 4f 52 0a 20 20 4f 52 44 45 52 20  ON.  OR.  ORDER 
10ba0 0a 20 20 50 52 49 4d 41 52 59 0a 20 20 52 45 46  .  PRIMARY.  REF
10bb0 45 52 45 4e 43 45 53 0a 20 20 52 4f 4c 4c 42 41  ERENCES.  ROLLBA
10bc0 43 4b 0a 20 20 53 45 4c 45 43 54 0a 20 20 53 45  CK.  SELECT.  SE
10bd0 54 0a 20 20 54 41 42 4c 45 0a 20 20 54 48 45 4e  T.  TABLE.  THEN
10be0 0a 20 20 54 52 41 4e 53 41 43 54 49 4f 4e 0a 20  .  TRANSACTION. 
10bf0 20 55 4e 49 4f 4e 20 0a 20 20 55 4e 49 51 55 45   UNION .  UNIQUE
10c00 0a 20 20 55 50 44 41 54 45 0a 20 20 55 53 49 4e  .  UPDATE.  USIN
10c10 47 0a 20 20 56 41 4c 55 45 53 0a 20 20 57 48 45  G.  VALUES.  WHE
10c20 4e 0a 20 20 57 48 45 52 45 0a 7d 0a 0a 70 75 74  N.  WHERE.}..put
10c30 73 20 7b 0a 3c 68 32 3e 53 70 65 63 69 61 6c 20  s {.<h2>Special 
10c40 77 6f 72 64 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54  words</h2>..<p>T
10c50 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 65  he following are
10c60 20 6e 6f 74 20 6b 65 79 77 6f 72 64 73 20 69 6e   not keywords in
10c70 20 53 51 4c 69 74 65 2c 20 62 75 74 20 61 72 65   SQLite, but are
10c80 20 75 73 65 64 20 61 73 20 6e 61 6d 65 73 20 6f   used as names o
10c90 66 20 0a 73 79 73 74 65 6d 20 6f 62 6a 65 63 74  f .system object
10ca0 73 2e 20 20 54 68 65 79 20 63 61 6e 20 62 65 20  s.  They can be 
10cb0 75 73 65 64 20 61 73 20 61 6e 20 69 64 65 6e 74  used as an ident
10cc0 69 66 69 65 72 20 66 6f 72 20 61 20 64 69 66 66  ifier for a diff
10cd0 65 72 65 6e 74 20 0a 74 79 70 65 20 6f 66 20 6f  erent .type of o
10ce0 62 6a 65 63 74 2e 3c 2f 70 3e 0a 7d 0a 0a 6b 65  bject.</p>.}..ke
10cf0 79 77 6f 72 64 5f 6c 69 73 74 20 7b 0a 20 20 2a  yword_list {.  *
10d00 5f 52 4f 57 49 44 5f 0a 20 20 2a 4d 41 49 4e 0a  _ROWID_.  *MAIN.
10d10 20 20 4f 49 44 0a 20 20 2a 52 4f 57 49 44 0a 20    OID.  *ROWID. 
10d20 20 2a 53 51 4c 49 54 45 5f 4d 41 53 54 45 52 0a   *SQLITE_MASTER.
10d30 20 20 2a 53 51 4c 49 54 45 5f 54 45 4d 50 5f 4d    *SQLITE_TEMP_M
10d40 41 53 54 45 52 0a 7d 0a 0a 70 75 74 73 20 7b 0a  ASTER.}..puts {.
10d50 3c 70 3e 3c 68 72 20 2f 3e 3c 2f 70 3e 0a 3c 70  <p><hr /></p>.<p
10d60 3e 3c 61 20 68 72 65 66 3d 22 69 6e 64 65 78 2e  ><a href="index.
10d70 68 74 6d 6c 22 3e 3c 69 6d 67 20 73 72 63 3d 22  html"><img src="
10d80 2f 67 6f 62 61 63 6b 2e 6a 70 67 22 20 62 6f 72  /goback.jpg" bor
10d90 64 65 72 3d 30 20 2f 3e 0a 42 61 63 6b 20 74 6f  der=0 />.Back to
10da0 20 74 68 65 20 53 51 4c 69 74 65 20 48 6f 6d 65   the SQLite Home
10db0 20 50 61 67 65 3c 2f 61 3e 0a 3c 2f 70 3e 0a 0a   Page</a>.</p>..
10dc0 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 7d 0a  </body></html>}.