/ Hex Artifact Content
Login

Artifact 8cf9f59fd93868c9954223a99db244c9975fa43b:


0000: 23 0a 23 20 52 75 6e 20 74 68 69 73 20 73 63 72  #.# Run this scr
0010: 69 70 74 20 74 6f 20 67 65 6e 65 72 61 74 65 64  ipt to generated
0020: 20 61 20 66 61 71 2e 68 74 6d 6c 20 6f 75 74 70   a faq.html outp
0030: 75 74 20 66 69 6c 65 0a 23 0a 73 65 74 20 72 63  ut file.#.set rc
0040: 73 69 64 20 7b 24 49 64 3a 20 66 61 71 2e 74 63  sid {$Id: faq.tc
0050: 6c 2c 76 20 31 2e 32 35 20 32 30 30 34 2f 30 39  l,v 1.25 2004/09
0060: 2f 31 38 20 31 38 3a 30 30 3a 32 34 20 64 72 68  /18 18:00:24 drh
0070: 20 45 78 70 20 24 7d 0a 73 6f 75 72 63 65 20 63   Exp $}.source c
0080: 6f 6d 6d 6f 6e 2e 74 63 6c 0a 68 65 61 64 65 72  ommon.tcl.header
0090: 20 7b 53 51 4c 69 74 65 20 46 72 65 71 75 65 6e   {SQLite Frequen
00a0: 74 6c 79 20 41 73 6b 65 64 20 51 75 65 73 74 69  tly Asked Questi
00b0: 6f 6e 73 3c 2f 74 69 74 6c 65 3e 7d 0a 0a 73 65  ons</title>}..se
00c0: 74 20 63 6e 74 20 31 0a 70 72 6f 63 20 66 61 71  t cnt 1.proc faq
00d0: 20 7b 71 75 65 73 74 69 6f 6e 20 61 6e 73 77 65   {question answe
00e0: 72 7d 20 7b 0a 20 20 73 65 74 20 3a 3a 66 61 71  r} {.  set ::faq
00f0: 28 24 3a 3a 63 6e 74 29 20 5b 6c 69 73 74 20 5b  ($::cnt) [list [
0100: 73 74 72 69 6e 67 20 74 72 69 6d 20 24 71 75 65  string trim $que
0110: 73 74 69 6f 6e 5d 20 5b 73 74 72 69 6e 67 20 74  stion] [string t
0120: 72 69 6d 20 24 61 6e 73 77 65 72 5d 5d 0a 20 20  rim $answer]].  
0130: 69 6e 63 72 20 3a 3a 63 6e 74 0a 7d 0a 0a 23 23  incr ::cnt.}..##
0140: 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 45 6e  ###########.# En
0150: 74 65 72 20 71 75 65 73 74 69 6f 6e 73 20 61 6e  ter questions an
0160: 64 20 61 6e 73 77 65 72 73 20 68 65 72 65 2e 0a  d answers here..
0170: 0a 66 61 71 20 7b 0a 20 20 48 6f 77 20 64 6f 20  .faq {.  How do 
0180: 49 20 63 72 65 61 74 65 20 61 6e 20 41 55 54 4f  I create an AUTO
0190: 49 4e 43 52 45 4d 45 4e 54 20 66 69 65 6c 64 2e  INCREMENT field.
01a0: 0a 7d 20 7b 0a 20 20 3c 70 3e 53 68 6f 72 74 20  .} {.  <p>Short 
01b0: 61 6e 73 77 65 72 3a 20 41 20 63 6f 6c 75 6d 6e  answer: A column
01c0: 20 64 65 63 6c 61 72 65 64 20 49 4e 54 45 47 45   declared INTEGE
01d0: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 77 69  R PRIMARY KEY wi
01e0: 6c 6c 0a 20 20 61 75 74 6f 69 6e 63 72 65 6d 65  ll.  autoincreme
01f0: 6e 74 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 48 65  nt.</p>..  <p>He
0200: 72 65 20 69 73 20 74 68 65 20 6c 6f 6e 67 20 61  re is the long a
0210: 6e 73 77 65 72 3a 0a 20 20 42 65 67 69 6e 6e 69  nswer:.  Beginni
0220: 6e 67 20 77 69 74 68 20 76 65 72 73 69 6f 6e 20  ng with version 
0230: 53 51 4c 69 74 65 20 32 2e 33 2e 34 2c 20 49 66  SQLite 2.3.4, If
0240: 20 79 6f 75 20 64 65 63 6c 61 72 65 20 61 20 63   you declare a c
0250: 6f 6c 75 6d 6e 20 6f 66 0a 20 20 61 20 74 61 62  olumn of.  a tab
0260: 6c 65 20 74 6f 20 62 65 20 49 4e 54 45 47 45 52  le to be INTEGER
0270: 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 74 68   PRIMARY KEY, th
0280: 65 6e 20 77 68 65 6e 65 76 65 72 20 79 6f 75 20  en whenever you 
0290: 69 6e 73 65 72 74 20 61 20 4e 55 4c 4c 0a 20 20  insert a NULL.  
02a0: 69 6e 74 6f 20 74 68 61 74 20 63 6f 6c 75 6d 6e  into that column
02b0: 20 6f 66 20 74 68 65 20 74 61 62 6c 65 2c 20 74   of the table, t
02c0: 68 65 20 4e 55 4c 4c 20 69 73 20 61 75 74 6f 6d  he NULL is autom
02d0: 61 74 69 63 61 6c 6c 79 20 63 6f 6e 76 65 72 74  atically convert
02e0: 65 64 0a 20 20 69 6e 74 6f 20 61 6e 20 69 6e 74  ed.  into an int
02f0: 65 67 65 72 20 77 68 69 63 68 20 69 73 20 6f 6e  eger which is on
0300: 65 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 74  e greater than t
0310: 68 65 20 6c 61 72 67 65 73 74 20 76 61 6c 75 65  he largest value
0320: 20 6f 66 20 74 68 61 74 0a 20 20 63 6f 6c 75 6d   of that.  colum
0330: 6e 20 6f 76 65 72 20 61 6c 6c 20 6f 74 68 65 72  n over all other
0340: 20 72 6f 77 73 20 69 6e 20 74 68 65 20 74 61 62   rows in the tab
0350: 6c 65 2c 20 6f 72 20 31 20 69 66 20 74 68 65 20  le, or 1 if the 
0360: 74 61 62 6c 65 20 69 73 20 65 6d 70 74 79 2e 0a  table is empty..
0370: 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 73    For example, s
0380: 75 70 70 6f 73 65 20 79 6f 75 20 68 61 76 65 20  uppose you have 
0390: 61 20 74 61 62 6c 65 20 6c 69 6b 65 20 74 68 69  a table like thi
03a0: 73 3a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  s:.<blockquote><
03b0: 70 72 65 3e 0a 43 52 45 41 54 45 20 54 41 42 4c  pre>.CREATE TABL
03c0: 45 20 74 31 28 0a 20 20 61 20 49 4e 54 45 47 45  E t1(.  a INTEGE
03d0: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 0a 20  R PRIMARY KEY,. 
03e0: 20 62 20 49 4e 54 45 47 45 52 0a 29 3b 0a 3c 2f   b INTEGER.);.</
03f0: 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  pre></blockquote
0400: 3e 0a 20 20 3c 70 3e 57 69 74 68 20 74 68 69 73  >.  <p>With this
0410: 20 74 61 62 6c 65 2c 20 74 68 65 20 73 74 61 74   table, the stat
0420: 65 6d 65 6e 74 3c 2f 70 3e 0a 3c 62 6c 6f 63 6b  ement</p>.<block
0430: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 49 4e 53 45  quote><pre>.INSE
0440: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
0450: 53 28 4e 55 4c 4c 2c 31 32 33 29 3b 0a 3c 2f 70  S(NULL,123);.</p
0460: 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e  re></blockquote>
0470: 0a 20 20 3c 70 3e 69 73 20 6c 6f 67 69 63 61 6c  .  <p>is logical
0480: 6c 79 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f  ly equivalent to
0490: 20 73 61 79 69 6e 67 3a 3c 2f 70 3e 0a 3c 62 6c   saying:</p>.<bl
04a0: 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 49  ockquote><pre>.I
04b0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41  NSERT INTO t1 VA
04c0: 4c 55 45 53 28 28 53 45 4c 45 43 54 20 6d 61 78  LUES((SELECT max
04d0: 28 61 29 20 46 52 4f 4d 20 74 31 29 2b 31 2c 31  (a) FROM t1)+1,1
04e0: 32 33 29 3b 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f  23);.</pre></blo
04f0: 63 6b 71 75 6f 74 65 3e 0a 20 20 3c 70 3e 46 6f  ckquote>.  <p>Fo
0500: 72 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e  r SQLite version
0510: 20 32 2e 32 2e 30 20 74 68 72 6f 75 67 68 20 32   2.2.0 through 2
0520: 2e 33 2e 33 2c 20 69 66 20 79 6f 75 20 69 6e 73  .3.3, if you ins
0530: 65 72 74 20 61 20 4e 55 4c 4c 20 69 6e 74 6f 0a  ert a NULL into.
0540: 20 20 61 6e 20 49 4e 54 45 47 45 52 20 50 52 49    an INTEGER PRI
0550: 4d 41 52 59 20 4b 45 59 20 63 6f 6c 75 6d 6e 2c  MARY KEY column,
0560: 20 74 68 65 20 4e 55 4c 4c 20 77 69 6c 6c 20 62   the NULL will b
0570: 65 20 63 68 61 6e 67 65 64 20 74 6f 20 61 20 75  e changed to a u
0580: 6e 69 71 75 65 0a 20 20 69 6e 74 65 67 65 72 2c  nique.  integer,
0590: 20 62 75 74 20 69 74 20 77 69 6c 6c 20 61 20 73   but it will a s
05a0: 65 6d 69 2d 72 61 6e 64 6f 6d 20 69 6e 74 65 67  emi-random integ
05b0: 65 72 2e 20 20 55 6e 69 71 75 65 20 6b 65 79 73  er.  Unique keys
05c0: 20 67 65 6e 65 72 61 74 65 64 20 74 68 69 73 0a   generated this.
05d0: 20 20 77 61 79 20 77 69 6c 6c 20 6e 6f 74 20 62    way will not b
05e0: 65 20 73 65 71 75 65 6e 74 69 61 6c 2e 20 20 46  e sequential.  F
05f0: 6f 72 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  or SQLite versio
0600: 6e 20 32 2e 33 2e 34 20 61 6e 64 20 62 65 79 6f  n 2.3.4 and beyo
0610: 6e 64 2c 20 74 68 65 0a 20 20 75 6e 69 71 75 65  nd, the.  unique
0620: 20 6b 65 79 73 20 77 69 6c 6c 20 62 65 20 73 65   keys will be se
0630: 71 75 65 6e 74 69 61 6c 20 75 6e 74 69 6c 20 74  quential until t
0640: 68 65 20 6c 61 72 67 65 73 74 20 6b 65 79 20 72  he largest key r
0650: 65 61 63 68 65 73 20 61 20 76 61 6c 75 65 0a 20  eaches a value. 
0660: 20 6f 66 20 32 31 34 37 34 38 33 36 34 37 2e 20   of 2147483647. 
0670: 20 54 68 61 74 20 69 73 20 74 68 65 20 6c 61 72   That is the lar
0680: 67 65 73 74 20 33 32 2d 62 69 74 20 73 69 67 6e  gest 32-bit sign
0690: 65 64 20 69 6e 74 65 67 65 72 20 61 6e 64 20 63  ed integer and c
06a0: 61 6e 6e 6f 74 0a 20 20 62 65 20 69 6e 63 72 65  annot.  be incre
06b0: 6d 65 6e 74 65 64 2c 20 73 6f 20 73 75 62 73 65  mented, so subse
06c0: 71 75 65 6e 74 20 69 6e 73 65 72 74 20 61 74 74  quent insert att
06d0: 65 6d 70 74 73 20 77 69 6c 6c 20 72 65 76 65 72  empts will rever
06e0: 74 20 74 6f 20 74 68 65 0a 20 20 73 65 6d 69 2d  t to the.  semi-
06f0: 72 61 6e 64 6f 6d 20 6b 65 79 20 67 65 6e 65 72  random key gener
0700: 61 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20  ation algorithm 
0710: 6f 66 20 53 51 4c 69 74 65 20 76 65 72 73 69 6f  of SQLite versio
0720: 6e 20 32 2e 33 2e 33 20 61 6e 64 0a 20 20 65 61  n 2.3.3 and.  ea
0730: 72 6c 69 65 72 2e 3c 2f 70 3e 0a 0a 20 20 3c 70  rlier.</p>..  <p
0740: 3e 42 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20  >Beginning with 
0750: 76 65 72 73 69 6f 6e 20 32 2e 32 2e 33 2c 20 74  version 2.2.3, t
0760: 68 65 72 65 20 69 73 20 61 20 6e 65 77 20 41 50  here is a new AP
0770: 49 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 64  I function named
0780: 0a 20 20 3c 62 3e 73 71 6c 69 74 65 5f 6c 61 73  .  <b>sqlite_las
0790: 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28 29  t_insert_rowid()
07a0: 3c 2f 62 3e 20 77 68 69 63 68 20 77 69 6c 6c 20  </b> which will 
07b0: 72 65 74 75 72 6e 20 74 68 65 20 69 6e 74 65 67  return the integ
07c0: 65 72 20 6b 65 79 0a 20 20 66 6f 72 20 74 68 65  er key.  for the
07d0: 20 6d 6f 73 74 20 72 65 63 65 6e 74 20 69 6e 73   most recent ins
07e0: 65 72 74 20 6f 70 65 72 61 74 69 6f 6e 2e 20 20  ert operation.  
07f0: 53 65 65 20 74 68 65 20 41 50 49 20 64 6f 63 75  See the API docu
0800: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 0a 20 20  mentation for.  
0810: 64 65 74 61 69 6c 73 2e 3c 2f 70 3e 0a 0a 20 20  details.</p>..  
0820: 3c 70 3e 53 51 4c 69 74 65 20 76 65 72 73 69 6f  <p>SQLite versio
0830: 6e 20 33 2e 30 20 65 78 70 61 6e 64 73 20 74 68  n 3.0 expands th
0840: 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 72 6f  e size of the ro
0850: 77 69 64 20 74 6f 20 36 34 20 62 69 74 73 2e 3c  wid to 64 bits.<
0860: 2f 70 3e 0a 7d 0a 0a 66 61 71 20 7b 0a 20 20 57  /p>.}..faq {.  W
0870: 68 61 74 20 64 61 74 61 74 79 70 65 73 20 64 6f  hat datatypes do
0880: 65 73 20 53 51 4c 69 74 65 20 73 75 70 70 6f 72  es SQLite suppor
0890: 74 3f 0a 7d 20 7b 0a 20 20 3c 70 3e 53 51 4c 69  t?.} {.  <p>SQLi
08a0: 74 65 20 69 67 6e 6f 72 65 73 0a 20 20 74 68 65  te ignores.  the
08b0: 20 64 61 74 61 74 79 70 65 20 69 6e 66 6f 72 6d   datatype inform
08c0: 61 74 69 6f 6e 20 74 68 61 74 20 66 6f 6c 6c 6f  ation that follo
08d0: 77 73 20 74 68 65 20 63 6f 6c 75 6d 6e 20 6e 61  ws the column na
08e0: 6d 65 20 69 6e 20 43 52 45 41 54 45 20 54 41 42  me in CREATE TAB
08f0: 4c 45 2e 0a 20 20 59 6f 75 20 63 61 6e 20 70 75  LE..  You can pu
0900: 74 20 61 6e 79 20 74 79 70 65 20 6f 66 20 64 61  t any type of da
0910: 74 61 20 79 6f 75 20 77 61 6e 74 0a 20 20 69 6e  ta you want.  in
0920: 74 6f 20 61 6e 79 20 63 6f 6c 75 6d 6e 2c 20 77  to any column, w
0930: 69 74 68 6f 75 74 20 72 65 67 61 72 64 20 74 6f  ithout regard to
0940: 20 74 68 65 20 64 65 63 6c 61 72 65 64 20 64 61   the declared da
0950: 74 61 74 79 70 65 20 6f 66 20 74 68 61 74 20 63  tatype of that c
0960: 6f 6c 75 6d 6e 2e 0a 20 20 3c 2f 70 3e 0a 0a 20  olumn..  </p>.. 
0970: 20 3c 70 3e 41 6e 20 65 78 63 65 70 74 69 6f 6e   <p>An exception
0980: 20 74 6f 20 74 68 69 73 20 72 75 6c 65 20 69 73   to this rule is
0990: 20 61 20 63 6f 6c 75 6d 6e 20 6f 66 20 74 79 70   a column of typ
09a0: 65 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  e INTEGER PRIMAR
09b0: 59 20 4b 45 59 2e 0a 20 20 53 75 63 68 20 63 6f  Y KEY..  Such co
09c0: 6c 75 6d 6e 73 20 6d 75 73 74 20 68 6f 6c 64 20  lumns must hold 
09d0: 61 6e 20 69 6e 74 65 67 65 72 2e 20 20 41 6e 20  an integer.  An 
09e0: 61 74 74 65 6d 70 74 20 74 6f 20 70 75 74 20 61  attempt to put a
09f0: 20 6e 6f 6e 2d 69 6e 74 65 67 65 72 0a 20 20 76   non-integer.  v
0a00: 61 6c 75 65 20 69 6e 74 6f 20 61 6e 20 49 4e 54  alue into an INT
0a10: 45 47 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59  EGER PRIMARY KEY
0a20: 20 63 6f 6c 75 6d 6e 20 77 69 6c 6c 20 67 65 6e   column will gen
0a30: 65 72 61 74 65 20 61 6e 20 65 72 72 6f 72 2e 3c  erate an error.<
0a40: 2f 70 3e 0a 0a 20 20 3c 70 3e 54 68 65 72 65 20  /p>..  <p>There 
0a50: 69 73 20 61 20 70 61 67 65 20 6f 6e 20 3c 61 20  is a page on <a 
0a60: 68 72 65 66 3d 22 64 61 74 61 74 79 70 65 73 2e  href="datatypes.
0a70: 68 74 6d 6c 22 3e 64 61 74 61 74 79 70 65 73 20  html">datatypes 
0a80: 69 6e 20 53 51 4c 69 74 65 0a 20 20 76 65 72 73  in SQLite.  vers
0a90: 69 6f 6e 20 32 2e 38 3c 2f 61 3e 0a 20 20 61 6e  ion 2.8</a>.  an
0aa0: 64 20 61 6e 6f 74 68 65 72 20 66 6f 72 20 3c 61  d another for <a
0ab0: 20 68 72 65 66 3d 22 64 61 74 61 74 79 70 65 33   href="datatype3
0ac0: 2e 68 74 6d 6c 22 3e 76 65 72 73 69 6f 6e 20 33  .html">version 3
0ad0: 2e 30 3c 2f 61 3e 0a 20 20 74 68 61 74 20 65 78  .0</a>.  that ex
0ae0: 70 6c 61 69 6e 73 20 74 68 69 73 20 63 6f 6e 63  plains this conc
0af0: 65 70 74 20 66 75 72 74 68 65 72 2e 3c 2f 70 3e  ept further.</p>
0b00: 0a 7d 0a 0a 66 61 71 20 7b 0a 20 20 53 51 4c 69  .}..faq {.  SQLi
0b10: 74 65 20 6c 65 74 73 20 6d 65 20 69 6e 73 65 72  te lets me inser
0b20: 74 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 20  t a string into 
0b30: 61 20 64 61 74 61 62 61 73 65 20 63 6f 6c 75 6d  a database colum
0b40: 6e 20 6f 66 20 74 79 70 65 20 69 6e 74 65 67 65  n of type intege
0b50: 72 21 0a 7d 20 7b 0a 20 20 3c 70 3e 54 68 69 73  r!.} {.  <p>This
0b60: 20 69 73 20 61 20 66 65 61 74 75 72 65 2c 20 6e   is a feature, n
0b70: 6f 74 20 61 20 62 75 67 2e 20 20 53 51 4c 69 74  ot a bug.  SQLit
0b80: 65 20 64 6f 65 73 20 6e 6f 74 20 65 6e 66 6f 72  e does not enfor
0b90: 63 65 20 64 61 74 61 20 74 79 70 65 0a 20 20 63  ce data type.  c
0ba0: 6f 6e 73 74 72 61 69 6e 74 73 2e 20 20 41 6e 79  onstraints.  Any
0bb0: 20 64 61 74 61 20 63 61 6e 20 62 65 0a 20 20 69   data can be.  i
0bc0: 6e 73 65 72 74 65 64 20 69 6e 74 6f 20 61 6e 79  nserted into any
0bd0: 20 63 6f 6c 75 6d 6e 2e 20 20 59 6f 75 20 63 61   column.  You ca
0be0: 6e 20 70 75 74 20 61 72 62 69 74 72 61 72 79 20  n put arbitrary 
0bf0: 6c 65 6e 67 74 68 20 73 74 72 69 6e 67 73 20 69  length strings i
0c00: 6e 74 6f 0a 20 20 69 6e 74 65 67 65 72 20 63 6f  nto.  integer co
0c10: 6c 75 6d 6e 73 2c 20 66 6c 6f 61 74 69 6e 67 20  lumns, floating 
0c20: 70 6f 69 6e 74 20 6e 75 6d 62 65 72 73 20 69 6e  point numbers in
0c30: 20 62 6f 6f 6c 65 61 6e 20 63 6f 6c 75 6d 6e 73   boolean columns
0c40: 2c 20 6f 72 20 64 61 74 65 73 0a 20 20 69 6e 20  , or dates.  in 
0c50: 63 68 61 72 61 63 74 65 72 20 63 6f 6c 75 6d 6e  character column
0c60: 73 2e 20 20 54 68 65 20 64 61 74 61 74 79 70 65  s.  The datatype
0c70: 20 79 6f 75 20 61 73 73 69 67 6e 20 74 6f 20 61   you assign to a
0c80: 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 0a 20   column in the. 
0c90: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 63 6f   CREATE TABLE co
0ca0: 6d 6d 61 6e 64 20 64 6f 65 73 20 6e 6f 74 20 72  mmand does not r
0cb0: 65 73 74 72 69 63 74 20 77 68 61 74 20 64 61 74  estrict what dat
0cc0: 61 20 63 61 6e 20 62 65 20 70 75 74 20 69 6e 74  a can be put int
0cd0: 6f 0a 20 20 74 68 61 74 20 63 6f 6c 75 6d 6e 2e  o.  that column.
0ce0: 20 20 45 76 65 72 79 20 63 6f 6c 75 6d 6e 20 69    Every column i
0cf0: 73 20 61 62 6c 65 20 74 6f 20 68 6f 6c 64 0a 20  s able to hold. 
0d00: 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 6c 65   an arbitrary le
0d10: 6e 67 74 68 20 73 74 72 69 6e 67 2e 20 20 28 54  ngth string.  (T
0d20: 68 65 72 65 20 69 73 20 6f 6e 65 20 65 78 63 65  here is one exce
0d30: 70 74 69 6f 6e 3a 20 43 6f 6c 75 6d 6e 73 20 6f  ption: Columns o
0d40: 66 0a 20 20 74 79 70 65 20 49 4e 54 45 47 45 52  f.  type INTEGER
0d50: 20 50 52 49 4d 41 52 59 20 4b 45 59 20 6d 61 79   PRIMARY KEY may
0d60: 20 6f 6e 6c 79 20 68 6f 6c 64 20 61 6e 20 69 6e   only hold an in
0d70: 74 65 67 65 72 2e 20 20 41 6e 20 65 72 72 6f 72  teger.  An error
0d80: 20 77 69 6c 6c 20 72 65 73 75 6c 74 0a 20 20 69   will result.  i
0d90: 66 20 79 6f 75 20 74 72 79 20 74 6f 20 70 75 74  f you try to put
0da0: 20 61 6e 79 74 68 69 6e 67 20 6f 74 68 65 72 20   anything other 
0db0: 74 68 61 6e 20 61 6e 20 69 6e 74 65 67 65 72 20  than an integer 
0dc0: 69 6e 74 6f 20 61 6e 0a 20 20 49 4e 54 45 47 45  into an.  INTEGE
0dd0: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 63 6f  R PRIMARY KEY co
0de0: 6c 75 6d 6e 2e 29 3c 2f 70 3e 0a 0a 20 20 3c 70  lumn.)</p>..  <p
0df0: 3e 54 68 65 20 64 61 74 61 74 79 70 65 20 64 6f  >The datatype do
0e00: 65 73 20 65 66 66 65 63 74 20 68 6f 77 20 76 61  es effect how va
0e10: 6c 75 65 73 20 61 72 65 20 63 6f 6d 70 61 72 65  lues are compare
0e20: 64 2c 20 68 6f 77 65 76 65 72 2e 20 20 46 6f 72  d, however.  For
0e30: 0a 20 20 63 6f 6c 75 6d 6e 73 20 77 69 74 68 20  .  columns with 
0e40: 61 20 6e 75 6d 65 72 69 63 20 74 79 70 65 20 28  a numeric type (
0e50: 73 75 63 68 20 61 73 20 22 69 6e 74 65 67 65 72  such as "integer
0e60: 22 29 20 61 6e 79 20 73 74 72 69 6e 67 20 74 68  ") any string th
0e70: 61 74 20 6c 6f 6f 6b 73 0a 20 20 6c 69 6b 65 20  at looks.  like 
0e80: 61 20 6e 75 6d 62 65 72 20 69 73 20 74 72 65 61  a number is trea
0e90: 74 65 64 20 61 73 20 61 20 6e 75 6d 62 65 72 20  ted as a number 
0ea0: 66 6f 72 20 63 6f 6d 70 61 72 69 73 6f 6e 20 61  for comparison a
0eb0: 6e 64 20 73 6f 72 74 69 6e 67 20 70 75 72 70 6f  nd sorting purpo
0ec0: 73 65 73 2e 0a 20 20 43 6f 6e 73 69 64 65 72 20  ses..  Consider 
0ed0: 74 68 65 73 65 20 74 77 6f 20 63 6f 6d 6d 61 6e  these two comman
0ee0: 64 20 73 65 71 75 65 6e 63 65 73 3a 3c 2f 70 3e  d sequences:</p>
0ef0: 0a 0a 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  ..  <blockquote>
0f00: 3c 70 72 65 3e 0a 43 52 45 41 54 45 20 54 41 42  <pre>.CREATE TAB
0f10: 4c 45 20 74 31 28 61 20 49 4e 54 45 47 45 52 20  LE t1(a INTEGER 
0f20: 55 4e 49 51 55 45 29 3b 20 20 20 20 20 20 20 20  UNIQUE);        
0f30: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28  CREATE TABLE t2(
0f40: 62 20 54 45 58 54 20 55 4e 49 51 55 45 29 3b 0a  b TEXT UNIQUE);.
0f50: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0f60: 41 4c 55 45 53 28 27 30 27 29 3b 20 20 20 20 20  ALUES('0');     
0f70: 20 20 20 20 20 20 20 20 20 20 49 4e 53 45 52 54            INSERT
0f80: 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53 28   INTO t2 VALUES(
0f90: 30 29 3b 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20  0);.INSERT INTO 
0fa0: 74 31 20 56 41 4c 55 45 53 28 27 30 2e 30 27 29  t1 VALUES('0.0')
0fb0: 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 49 4e  ;             IN
0fc0: 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c  SERT INTO t2 VAL
0fd0: 55 45 53 28 30 2e 30 29 3b 0a 3c 2f 70 72 65 3e  UES(0.0);.</pre>
0fe0: 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20  </blockquote>.. 
0ff0: 20 3c 70 3e 49 6e 20 74 68 65 20 73 65 71 75 65   <p>In the seque
1000: 6e 63 65 20 6f 6e 20 74 68 65 20 6c 65 66 74 2c  nce on the left,
1010: 20 74 68 65 20 73 65 63 6f 6e 64 20 69 6e 73 65   the second inse
1020: 72 74 20 77 69 6c 6c 20 66 61 69 6c 2e 20 20 49  rt will fail.  I
1030: 6e 20 74 68 69 73 20 63 61 73 65 2c 0a 20 20 74  n this case,.  t
1040: 68 65 20 73 74 72 69 6e 67 73 20 27 30 27 20 61  he strings '0' a
1050: 6e 64 20 27 30 2e 30 27 20 61 72 65 20 74 72 65  nd '0.0' are tre
1060: 61 74 65 64 20 61 73 20 6e 75 6d 62 65 72 73 20  ated as numbers 
1070: 73 69 6e 63 65 20 74 68 65 79 20 61 72 65 20 62  since they are b
1080: 65 69 6e 67 20 0a 20 20 69 6e 73 65 72 74 65 64  eing .  inserted
1090: 20 69 6e 74 6f 20 61 20 6e 75 6d 65 72 69 63 20   into a numeric 
10a0: 63 6f 6c 75 6d 6e 20 61 6e 64 20 30 3d 3d 30 2e  column and 0==0.
10b0: 30 20 77 68 69 63 68 20 76 69 6f 6c 61 74 65 73  0 which violates
10c0: 20 74 68 65 20 75 6e 69 71 75 65 6e 65 73 73 0a   the uniqueness.
10d0: 20 20 63 6f 6e 73 74 72 61 69 6e 74 2e 20 20 42    constraint.  B
10e0: 75 74 20 74 68 65 20 73 65 63 6f 6e 64 20 69 6e  ut the second in
10f0: 73 65 72 74 20 69 6e 20 74 68 65 20 72 69 67 68  sert in the righ
1100: 74 2d 68 61 6e 64 20 73 65 71 75 65 6e 63 65 20  t-hand sequence 
1110: 77 6f 72 6b 73 2e 20 20 49 6e 0a 20 20 74 68 69  works.  In.  thi
1120: 73 20 63 61 73 65 2c 20 74 68 65 20 63 6f 6e 73  s case, the cons
1130: 74 61 6e 74 73 20 30 20 61 6e 64 20 30 2e 30 20  tants 0 and 0.0 
1140: 61 72 65 20 74 72 65 61 74 65 64 20 61 20 73 74  are treated a st
1150: 72 69 6e 67 73 20 77 68 69 63 68 20 6d 65 61 6e  rings which mean
1160: 73 20 74 68 61 74 0a 20 20 74 68 65 79 20 61 72  s that.  they ar
1170: 65 20 64 69 73 74 69 6e 63 74 2e 3c 2f 70 3e 0a  e distinct.</p>.
1180: 0a 20 20 3c 70 3e 54 68 65 72 65 20 69 73 20 61  .  <p>There is a
1190: 20 70 61 67 65 20 6f 6e 20 3c 61 20 68 72 65 66   page on <a href
11a0: 3d 22 64 61 74 61 74 79 70 65 73 2e 68 74 6d 6c  ="datatypes.html
11b0: 22 3e 64 61 74 61 74 79 70 65 73 20 69 6e 20 53  ">datatypes in S
11c0: 51 4c 69 74 65 0a 20 20 76 65 72 73 69 6f 6e 20  QLite.  version 
11d0: 32 2e 38 3c 2f 61 3e 0a 20 20 61 6e 64 20 61 6e  2.8</a>.  and an
11e0: 6f 74 68 65 72 20 66 6f 72 20 3c 61 20 68 72 65  other for <a hre
11f0: 66 3d 22 64 61 74 61 74 79 70 65 33 2e 68 74 6d  f="datatype3.htm
1200: 6c 22 3e 76 65 72 73 69 6f 6e 20 33 2e 30 3c 2f  l">version 3.0</
1210: 61 3e 0a 20 20 74 68 61 74 20 65 78 70 6c 61 69  a>.  that explai
1220: 6e 73 20 74 68 69 73 20 63 6f 6e 63 65 70 74 20  ns this concept 
1230: 66 75 72 74 68 65 72 2e 3c 2f 70 3e 0a 7d 0a 0a  further.</p>.}..
1240: 66 61 71 20 7b 0a 20 20 57 68 79 20 64 6f 65 73  faq {.  Why does
1250: 20 53 51 4c 69 74 65 20 74 68 69 6e 6b 20 74 68   SQLite think th
1260: 61 74 20 74 68 65 20 65 78 70 72 65 73 73 69 6f  at the expressio
1270: 6e 20 27 30 27 3d 3d 27 30 30 27 20 69 73 20 54  n '0'=='00' is T
1280: 52 55 45 3f 0a 7d 20 7b 0a 20 20 3c 70 3e 41 73  RUE?.} {.  <p>As
1290: 20 6f 66 20 76 65 72 73 69 6f 6e 20 32 2e 37 2e   of version 2.7.
12a0: 30 2c 20 69 74 20 64 6f 65 73 6e 27 74 2e 3c 2f  0, it doesn't.</
12b0: 70 3e 0a 0a 20 20 3c 70 3e 42 75 74 20 69 66 20  p>..  <p>But if 
12c0: 6f 6e 65 20 6f 66 20 74 68 65 20 74 77 6f 20 76  one of the two v
12d0: 61 6c 75 65 73 20 62 65 69 6e 67 20 63 6f 6d 70  alues being comp
12e0: 61 72 65 64 20 69 73 20 73 74 6f 72 65 64 20 69  ared is stored i
12f0: 6e 20 61 20 63 6f 6c 75 6d 6e 20 74 68 61 74 0a  n a column that.
1300: 20 20 68 61 73 20 61 20 6e 75 6d 65 72 69 63 20    has a numeric 
1310: 74 79 70 65 2c 20 74 68 65 20 74 68 65 20 6f 74  type, the the ot
1320: 68 65 72 20 76 61 6c 75 65 20 69 73 20 74 72 65  her value is tre
1330: 61 74 65 64 20 61 73 20 61 20 6e 75 6d 62 65 72  ated as a number
1340: 2c 20 6e 6f 74 20 61 0a 20 20 73 74 72 69 6e 67  , not a.  string
1350: 20 61 6e 64 20 74 68 65 20 72 65 73 75 6c 74 20   and the result 
1360: 73 75 63 63 65 65 64 73 2e 20 20 46 6f 72 20 65  succeeds.  For e
1370: 78 61 6d 70 6c 65 3a 3c 2f 70 3e 0a 0a 3c 62 6c  xample:</p>..<bl
1380: 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 43  ockquote><pre>.C
1390: 52 45 41 54 45 20 54 41 42 4c 45 20 74 33 28 61  REATE TABLE t3(a
13a0: 20 49 4e 54 45 47 45 52 2c 20 62 20 54 45 58 54   INTEGER, b TEXT
13b0: 29 3b 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  );.INSERT INTO t
13c0: 33 20 56 41 4c 55 45 53 28 30 2c 30 29 3b 0a 53  3 VALUES(0,0);.S
13d0: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
13e0: 52 4f 4d 20 74 33 20 57 48 45 52 45 20 61 3d 3d  ROM t3 WHERE a==
13f0: 27 30 30 27 3b 0a 3c 2f 70 72 65 3e 3c 2f 62 6c  '00';.</pre></bl
1400: 6f 63 6b 71 75 6f 74 65 3e 0a 0a 20 20 3c 70 3e  ockquote>..  <p>
1410: 54 68 65 20 53 45 4c 45 43 54 20 69 6e 20 74 68  The SELECT in th
1420: 65 20 61 62 6f 76 65 20 73 65 72 69 65 73 20 6f  e above series o
1430: 66 20 63 6f 6d 6d 61 6e 64 73 20 72 65 74 75 72  f commands retur
1440: 6e 73 20 31 2e 20 20 54 68 65 20 22 61 22 20 63  ns 1.  The "a" c
1450: 6f 6c 75 6d 6e 0a 20 20 69 73 20 6e 75 6d 65 72  olumn.  is numer
1460: 69 63 20 73 6f 20 69 6e 20 74 68 65 20 57 48 45  ic so in the WHE
1470: 52 45 20 63 6c 61 75 73 65 20 74 68 65 20 73 74  RE clause the st
1480: 72 69 6e 67 20 27 30 30 27 20 69 73 20 63 6f 6e  ring '00' is con
1490: 76 65 72 74 65 64 20 69 6e 74 6f 20 61 0a 20 20  verted into a.  
14a0: 6e 75 6d 62 65 72 20 66 6f 72 20 63 6f 6d 70 61  number for compa
14b0: 72 69 73 6f 6e 20 61 67 61 69 6e 73 74 20 22 61  rison against "a
14c0: 22 2e 20 20 30 3d 3d 30 30 20 73 6f 20 74 68 65  ".  0==00 so the
14d0: 20 74 65 73 74 20 69 73 20 74 72 75 65 2e 20 20   test is true.  
14e0: 4e 6f 77 0a 20 20 63 6f 6e 73 69 64 65 72 20 61  Now.  consider a
14f0: 20 64 69 66 66 65 72 65 6e 74 20 53 45 4c 45 43   different SELEC
1500: 54 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75  T:</p>..<blockqu
1510: 6f 74 65 3e 3c 70 72 65 3e 0a 53 45 4c 45 43 54  ote><pre>.SELECT
1520: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
1530: 33 20 57 48 45 52 45 20 62 3d 3d 27 30 30 27 3b  3 WHERE b=='00';
1540: 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  .</pre></blockqu
1550: 6f 74 65 3e 0a 0a 20 20 3c 70 3e 49 6e 20 74 68  ote>..  <p>In th
1560: 69 73 20 63 61 73 65 20 74 68 65 20 61 6e 73 77  is case the answ
1570: 65 72 20 69 73 20 30 2e 20 20 42 20 69 73 20 61  er is 0.  B is a
1580: 20 74 65 78 74 20 63 6f 6c 75 6d 6e 20 73 6f 20   text column so 
1590: 61 20 74 65 78 74 20 63 6f 6d 70 61 72 69 73 6f  a text compariso
15a0: 6e 0a 20 20 69 73 20 64 6f 6e 65 20 61 67 61 69  n.  is done agai
15b0: 6e 73 74 20 27 30 30 27 2e 20 20 27 30 27 21 3d  nst '00'.  '0'!=
15c0: 27 30 30 27 20 73 6f 20 74 68 65 20 57 48 45 52  '00' so the WHER
15d0: 45 20 63 6c 61 75 73 65 20 72 65 74 75 72 6e 73  E clause returns
15e0: 20 46 41 4c 53 45 20 61 6e 64 0a 20 20 74 68 65   FALSE and.  the
15f0: 20 63 6f 75 6e 74 20 69 73 20 7a 65 72 6f 2e 3c   count is zero.<
1600: 2f 70 3e 0a 0a 20 20 3c 70 3e 54 68 65 72 65 20  /p>..  <p>There 
1610: 69 73 20 61 20 70 61 67 65 20 6f 6e 20 3c 61 20  is a page on <a 
1620: 68 72 65 66 3d 22 64 61 74 61 74 79 70 65 73 2e  href="datatypes.
1630: 68 74 6d 6c 22 3e 64 61 74 61 74 79 70 65 73 20  html">datatypes 
1640: 69 6e 20 53 51 4c 69 74 65 0a 20 20 76 65 72 73  in SQLite.  vers
1650: 69 6f 6e 20 32 2e 38 3c 2f 61 3e 0a 20 20 61 6e  ion 2.8</a>.  an
1660: 64 20 61 6e 6f 74 68 65 72 20 66 6f 72 20 3c 61  d another for <a
1670: 20 68 72 65 66 3d 22 64 61 74 61 74 79 70 65 33   href="datatype3
1680: 2e 68 74 6d 6c 22 3e 76 65 72 73 69 6f 6e 20 33  .html">version 3
1690: 2e 30 3c 2f 61 3e 0a 20 20 74 68 61 74 20 65 78  .0</a>.  that ex
16a0: 70 6c 61 69 6e 73 20 74 68 69 73 20 63 6f 6e 63  plains this conc
16b0: 65 70 74 20 66 75 72 74 68 65 72 2e 3c 2f 70 3e  ept further.</p>
16c0: 0a 7d 0a 0a 66 61 71 20 7b 0a 20 20 57 68 79 20  .}..faq {.  Why 
16d0: 64 6f 65 73 6e 27 74 20 53 51 4c 69 74 65 20 61  doesn't SQLite a
16e0: 6c 6c 6f 77 20 6d 65 20 74 6f 20 75 73 65 20 27  llow me to use '
16f0: 30 27 20 61 6e 64 20 27 30 2e 30 27 20 61 73 20  0' and '0.0' as 
1700: 74 68 65 20 70 72 69 6d 61 72 79 0a 20 20 6b 65  the primary.  ke
1710: 79 20 6f 6e 20 74 77 6f 20 64 69 66 66 65 72 65  y on two differe
1720: 6e 74 20 72 6f 77 73 20 6f 66 20 74 68 65 20 73  nt rows of the s
1730: 61 6d 65 20 74 61 62 6c 65 3f 0a 7d 20 7b 0a 20  ame table?.} {. 
1740: 20 3c 70 3e 59 6f 75 72 20 70 72 69 6d 61 72 79   <p>Your primary
1750: 20 6b 65 79 20 6d 75 73 74 20 68 61 76 65 20 61   key must have a
1760: 20 6e 75 6d 65 72 69 63 20 74 79 70 65 2e 20 20   numeric type.  
1770: 43 68 61 6e 67 65 20 74 68 65 20 64 61 74 61 74  Change the datat
1780: 79 70 65 20 6f 66 0a 20 20 79 6f 75 72 20 70 72  ype of.  your pr
1790: 69 6d 61 72 79 20 6b 65 79 20 74 6f 20 54 45 58  imary key to TEX
17a0: 54 20 61 6e 64 20 69 74 20 73 68 6f 75 6c 64 20  T and it should 
17b0: 77 6f 72 6b 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e  work.</p>..  <p>
17c0: 45 76 65 72 79 20 72 6f 77 20 6d 75 73 74 20 68  Every row must h
17d0: 61 76 65 20 61 20 75 6e 69 71 75 65 20 70 72 69  ave a unique pri
17e0: 6d 61 72 79 20 6b 65 79 2e 20 20 46 6f 72 20 61  mary key.  For a
17f0: 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 61 0a 20   column with a. 
1800: 20 6e 75 6d 65 72 69 63 20 74 79 70 65 2c 20 53   numeric type, S
1810: 51 4c 69 74 65 20 74 68 69 6e 6b 73 20 74 68 61  QLite thinks tha
1820: 74 20 3c 62 3e 27 30 27 3c 2f 62 3e 20 61 6e 64  t <b>'0'</b> and
1830: 20 3c 62 3e 27 30 2e 30 27 3c 2f 62 3e 20 61 72   <b>'0.0'</b> ar
1840: 65 20 74 68 65 0a 20 20 73 61 6d 65 20 76 61 6c  e the.  same val
1850: 75 65 20 62 65 63 61 75 73 65 20 74 68 65 79 20  ue because they 
1860: 63 6f 6d 70 61 72 65 20 65 71 75 61 6c 20 74 6f  compare equal to
1870: 20 6f 6e 65 20 61 6e 6f 74 68 65 72 20 6e 75 6d   one another num
1880: 65 72 69 63 61 6c 6c 79 2e 0a 20 20 28 53 65 65  erically..  (See
1890: 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 71 75   the previous qu
18a0: 65 73 74 69 6f 6e 2e 29 20 20 48 65 6e 63 65 20  estion.)  Hence 
18b0: 74 68 65 20 76 61 6c 75 65 73 20 61 72 65 20 6e  the values are n
18c0: 6f 74 20 75 6e 69 71 75 65 2e 3c 2f 70 3e 0a 7d  ot unique.</p>.}
18d0: 0a 20 20 20 20 20 20 20 20 0a 66 61 71 20 7b 0a  .        .faq {.
18e0: 20 20 4d 79 20 6c 69 6e 75 78 20 62 6f 78 20 69    My linux box i
18f0: 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f 20 72 65  s not able to re
1900: 61 64 20 61 6e 20 53 51 4c 69 74 65 20 64 61 74  ad an SQLite dat
1910: 61 62 61 73 65 20 74 68 61 74 20 77 61 73 20 63  abase that was c
1920: 72 65 61 74 65 64 0a 20 20 6f 6e 20 6d 79 20 53  reated.  on my S
1930: 70 61 72 63 53 74 61 74 69 6f 6e 2e 0a 7d 20 7b  parcStation..} {
1940: 0a 20 20 3c 70 3e 59 6f 75 20 6e 65 65 64 20 74  .  <p>You need t
1950: 6f 20 75 70 67 72 61 64 65 20 79 6f 75 72 20 53  o upgrade your S
1960: 51 4c 69 74 65 20 6c 69 62 72 61 72 79 20 74 6f  QLite library to
1970: 20 76 65 72 73 69 6f 6e 20 32 2e 36 2e 33 20 6f   version 2.6.3 o
1980: 72 20 6c 61 74 65 72 2e 3c 2f 70 3e 0a 0a 20 20  r later.</p>..  
1990: 3c 70 3e 54 68 65 20 78 38 36 20 70 72 6f 63 65  <p>The x86 proce
19a0: 73 73 6f 72 20 6f 6e 20 79 6f 75 72 20 6c 69 6e  ssor on your lin
19b0: 75 78 20 62 6f 78 20 69 73 20 6c 69 74 74 6c 65  ux box is little
19c0: 2d 65 6e 64 69 61 6e 20 28 6d 65 61 6e 69 6e 67  -endian (meaning
19d0: 20 74 68 61 74 0a 20 20 74 68 65 20 6c 65 61 73   that.  the leas
19e0: 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62 79  t significant by
19f0: 74 65 20 6f 66 20 69 6e 74 65 67 65 72 73 20 63  te of integers c
1a00: 6f 6d 65 73 20 66 69 72 73 74 29 20 62 75 74 20  omes first) but 
1a10: 74 68 65 20 53 70 61 72 63 20 69 73 0a 20 20 62  the Sparc is.  b
1a20: 69 67 2d 65 6e 64 69 61 6e 20 28 74 68 65 20 6d  ig-endian (the m
1a30: 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20  ost significant 
1a40: 62 79 74 65 73 20 63 6f 6d 65 73 20 66 69 72 73  bytes comes firs
1a50: 74 29 2e 20 20 53 51 4c 69 74 65 20 64 61 74 61  t).  SQLite data
1a60: 62 61 73 65 73 0a 20 20 63 72 65 61 74 65 64 20  bases.  created 
1a70: 6f 6e 20 61 20 6c 69 74 74 6c 65 2d 65 6e 64 69  on a little-endi
1a80: 61 6e 20 61 72 63 68 69 74 65 63 74 75 72 65 20  an architecture 
1a90: 63 61 6e 6e 6f 74 20 62 65 20 6f 6e 20 61 20 62  cannot be on a b
1aa0: 69 67 2d 65 6e 64 69 61 6e 0a 20 20 6d 61 63 68  ig-endian.  mach
1ab0: 69 6e 65 20 62 79 20 76 65 72 73 69 6f 6e 20 32  ine by version 2
1ac0: 2e 36 2e 32 20 6f 72 20 65 61 72 6c 69 65 72 20  .6.2 or earlier 
1ad0: 6f 66 20 53 51 4c 69 74 65 2e 20 20 42 65 67 69  of SQLite.  Begi
1ae0: 6e 6e 69 6e 67 20 77 69 74 68 0a 20 20 76 65 72  nning with.  ver
1af0: 73 69 6f 6e 20 32 2e 36 2e 33 2c 20 53 51 4c 69  sion 2.6.3, SQLi
1b00: 74 65 20 73 68 6f 75 6c 64 20 62 65 20 61 62 6c  te should be abl
1b10: 65 20 74 6f 20 72 65 61 64 20 61 6e 64 20 77 72  e to read and wr
1b20: 69 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ite database fil
1b30: 65 73 0a 20 20 72 65 67 61 72 64 6c 65 73 73 20  es.  regardless 
1b40: 6f 66 20 62 79 74 65 20 6f 72 64 65 72 20 6f 66  of byte order of
1b50: 20 74 68 65 20 6d 61 63 68 69 6e 65 20 6f 6e 20   the machine on 
1b60: 77 68 69 63 68 20 74 68 65 20 66 69 6c 65 20 77  which the file w
1b70: 61 73 20 63 72 65 61 74 65 64 2e 3c 2f 70 3e 0a  as created.</p>.
1b80: 7d 0a 0a 66 61 71 20 7b 0a 20 20 43 61 6e 20 6d  }..faq {.  Can m
1b90: 75 6c 74 69 70 6c 65 20 61 70 70 6c 69 63 61 74  ultiple applicat
1ba0: 69 6f 6e 73 20 6f 72 20 6d 75 6c 74 69 70 6c 65  ions or multiple
1bb0: 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 74 68   instances of th
1bc0: 65 20 73 61 6d 65 0a 20 20 61 70 70 6c 69 63 61  e same.  applica
1bd0: 74 69 6f 6e 20 61 63 63 65 73 73 20 61 20 73 69  tion access a si
1be0: 6e 67 6c 65 20 64 61 74 61 62 61 73 65 20 66 69  ngle database fi
1bf0: 6c 65 20 61 74 20 74 68 65 20 73 61 6d 65 20 74  le at the same t
1c00: 69 6d 65 3f 0a 7d 20 7b 0a 20 20 3c 70 3e 4d 75  ime?.} {.  <p>Mu
1c10: 6c 74 69 70 6c 65 20 70 72 6f 63 65 73 73 65 73  ltiple processes
1c20: 20 63 61 6e 20 68 61 76 65 20 74 68 65 20 73 61   can have the sa
1c30: 6d 65 20 64 61 74 61 62 61 73 65 20 6f 70 65 6e  me database open
1c40: 20 61 74 20 74 68 65 20 73 61 6d 65 0a 20 20 74   at the same.  t
1c50: 69 6d 65 2e 20 20 4d 75 6c 74 69 70 6c 65 20 70  ime.  Multiple p
1c60: 72 6f 63 65 73 73 65 73 20 63 61 6e 20 62 65 20  rocesses can be 
1c70: 64 6f 69 6e 67 20 61 20 53 45 4c 45 43 54 0a 20  doing a SELECT. 
1c80: 20 61 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d   at the same tim
1c90: 65 2e 20 20 42 75 74 20 6f 6e 6c 79 20 6f 6e 65  e.  But only one
1ca0: 20 70 72 6f 63 65 73 73 20 63 61 6e 20 62 65 20   process can be 
1cb0: 6d 61 6b 69 6e 67 20 63 68 61 6e 67 65 73 20 74  making changes t
1cc0: 6f 0a 20 20 74 68 65 20 64 61 74 61 62 61 73 65  o.  the database
1cd0: 20 61 74 20 6f 6e 63 65 2e 3c 2f 70 3e 0a 0a 20   at once.</p>.. 
1ce0: 20 3c 70 3e 57 69 6e 39 35 2f 39 38 2f 4d 45 20   <p>Win95/98/ME 
1cf0: 6c 61 63 6b 73 20 73 75 70 70 6f 72 74 20 66 6f  lacks support fo
1d00: 72 20 72 65 61 64 65 72 2f 77 72 69 74 65 72 20  r reader/writer 
1d10: 6c 6f 63 6b 73 20 69 6e 20 74 68 65 20 6f 70 65  locks in the ope
1d20: 72 61 74 69 6e 67 0a 20 20 73 79 73 74 65 6d 2e  rating.  system.
1d30: 20 20 50 72 69 6f 72 20 74 6f 20 76 65 72 73 69    Prior to versi
1d40: 6f 6e 20 32 2e 37 2e 30 2c 20 74 68 69 73 20 6d  on 2.7.0, this m
1d50: 65 61 6e 74 20 74 68 61 74 20 75 6e 64 65 72 20  eant that under 
1d60: 77 69 6e 64 6f 77 73 20 79 6f 75 0a 20 20 63 6f  windows you.  co
1d70: 75 6c 64 20 6f 6e 6c 79 20 68 61 76 65 20 61 20  uld only have a 
1d80: 73 69 6e 67 6c 65 20 70 72 6f 63 65 73 73 20 72  single process r
1d90: 65 61 64 69 6e 67 20 74 68 65 20 64 61 74 61 62  eading the datab
1da0: 61 73 65 20 61 74 20 6f 6e 65 20 74 69 6d 65 2e  ase at one time.
1db0: 0a 20 20 54 68 69 73 20 70 72 6f 62 6c 65 6d 20  .  This problem 
1dc0: 77 61 73 20 72 65 73 6f 6c 76 65 64 20 69 6e 20  was resolved in 
1dd0: 76 65 72 73 69 6f 6e 20 32 2e 37 2e 30 20 62 79  version 2.7.0 by
1de0: 20 69 6d 70 6c 65 6d 65 6e 74 69 6e 67 20 61 20   implementing a 
1df0: 75 73 65 72 2d 73 70 61 63 65 0a 20 20 70 72 6f  user-space.  pro
1e00: 62 61 62 69 6c 69 73 74 69 63 20 72 65 61 64 65  babilistic reade
1e10: 72 2f 77 72 69 74 65 72 20 6c 6f 63 6b 69 6e 67  r/writer locking
1e20: 20 73 74 72 61 74 65 67 79 20 69 6e 20 74 68 65   strategy in the
1e30: 20 77 69 6e 64 6f 77 73 20 69 6e 74 65 72 66 61   windows interfa
1e40: 63 65 0a 20 20 63 6f 64 65 20 66 69 6c 65 2e 20  ce.  code file. 
1e50: 20 57 69 6e 64 6f 77 73 0a 20 20 6e 6f 77 20 77   Windows.  now w
1e60: 6f 72 6b 73 20 6c 69 6b 65 20 55 6e 69 78 20 69  orks like Unix i
1e70: 6e 20 61 6c 6c 6f 77 69 6e 67 20 6d 75 6c 74 69  n allowing multi
1e80: 70 6c 65 20 73 69 6d 75 6c 74 61 6e 65 6f 75 73  ple simultaneous
1e90: 20 72 65 61 64 65 72 73 2e 3c 2f 70 3e 0a 0a 20   readers.</p>.. 
1ea0: 20 3c 70 3e 54 68 65 20 6c 6f 63 6b 69 6e 67 20   <p>The locking 
1eb0: 6d 65 63 68 61 6e 69 73 6d 20 75 73 65 64 20 74  mechanism used t
1ec0: 6f 20 63 6f 6e 74 72 6f 6c 20 73 69 6d 75 6c 74  o control simult
1ed0: 61 6e 65 6f 75 73 20 61 63 63 65 73 73 20 6d 69  aneous access mi
1ee0: 67 68 74 0a 20 20 6e 6f 74 20 77 6f 72 6b 20 63  ght.  not work c
1ef0: 6f 72 72 65 63 74 6c 79 20 69 66 20 74 68 65 20  orrectly if the 
1f00: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 69 73  database file is
1f10: 20 6b 65 70 74 20 6f 6e 20 61 6e 20 4e 46 53 20   kept on an NFS 
1f20: 66 69 6c 65 73 79 73 74 65 6d 2e 0a 20 20 54 68  filesystem..  Th
1f30: 69 73 20 69 73 20 62 65 63 61 75 73 65 20 66 69  is is because fi
1f40: 6c 65 20 6c 6f 63 6b 69 6e 67 20 69 73 20 62 72  le locking is br
1f50: 6f 6b 65 6e 20 6f 6e 20 73 6f 6d 65 20 4e 46 53  oken on some NFS
1f60: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
1f70: 2e 0a 20 20 59 6f 75 20 73 68 6f 75 6c 64 20 61  ..  You should a
1f80: 76 6f 69 64 20 70 75 74 74 69 6e 67 20 53 51 4c  void putting SQL
1f90: 69 74 65 20 64 61 74 61 62 61 73 65 20 66 69 6c  ite database fil
1fa0: 65 73 20 6f 6e 20 4e 46 53 20 69 66 20 6d 75 6c  es on NFS if mul
1fb0: 74 69 70 6c 65 0a 20 20 70 72 6f 63 65 73 73 65  tiple.  processe
1fc0: 73 20 6d 69 67 68 74 20 74 72 79 20 74 6f 20 61  s might try to a
1fd0: 63 63 65 73 73 20 74 68 65 20 66 69 6c 65 20 61  ccess the file a
1fe0: 74 20 74 68 65 20 73 61 6d 65 20 74 69 6d 65 2e  t the same time.
1ff0: 20 20 4f 6e 20 57 69 6e 64 6f 77 73 2c 0a 20 20    On Windows,.  
2000: 4d 69 63 72 6f 73 6f 66 74 27 73 20 64 6f 63 75  Microsoft's docu
2010: 6d 65 6e 74 61 74 69 6f 6e 20 73 61 79 73 20 74  mentation says t
2020: 68 61 74 20 6c 6f 63 6b 69 6e 67 20 6d 61 79 20  hat locking may 
2030: 6e 6f 74 20 77 6f 72 6b 20 75 6e 64 65 72 20 46  not work under F
2040: 41 54 0a 20 20 66 69 6c 65 73 79 73 74 65 6d 73  AT.  filesystems
2050: 20 69 66 20 79 6f 75 20 61 72 65 20 6e 6f 74 20   if you are not 
2060: 72 75 6e 6e 69 6e 67 20 74 68 65 20 53 68 61 72  running the Shar
2070: 65 2e 65 78 65 20 64 61 65 6d 6f 6e 2e 20 20 50  e.exe daemon.  P
2080: 65 6f 70 6c 65 20 77 68 6f 0a 20 20 68 61 76 65  eople who.  have
2090: 20 61 20 6c 6f 74 20 6f 66 20 65 78 70 65 72 69   a lot of experi
20a0: 65 6e 63 65 20 77 69 74 68 20 57 69 6e 64 6f 77  ence with Window
20b0: 73 20 74 65 6c 6c 20 6d 65 20 74 68 61 74 20 66  s tell me that f
20c0: 69 6c 65 20 6c 6f 63 6b 69 6e 67 20 6f 66 0a 20  ile locking of. 
20d0: 20 6e 65 74 77 6f 72 6b 20 66 69 6c 65 73 20 69   network files i
20e0: 73 20 76 65 72 79 20 62 75 67 67 79 20 61 6e 64  s very buggy and
20f0: 20 69 73 20 6e 6f 74 20 64 65 70 65 6e 64 61 62   is not dependab
2100: 6c 65 2e 20 20 49 66 20 77 68 61 74 20 74 68 65  le.  If what the
2110: 79 0a 20 20 73 61 79 20 69 73 20 74 72 75 65 2c  y.  say is true,
2120: 20 73 68 61 72 69 6e 67 20 61 6e 20 53 51 4c 69   sharing an SQLi
2130: 74 65 20 64 61 74 61 62 61 73 65 20 62 65 74 77  te database betw
2140: 65 65 6e 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20  een two or more 
2150: 57 69 6e 64 6f 77 73 0a 20 20 6d 61 63 68 69 6e  Windows.  machin
2160: 65 73 20 6d 69 67 68 74 20 63 61 75 73 65 20 75  es might cause u
2170: 6e 65 78 70 65 63 74 65 64 20 70 72 6f 62 6c 65  nexpected proble
2180: 6d 73 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 4c 6f  ms.</p>..  <p>Lo
2190: 63 6b 69 6e 67 20 69 6e 20 53 51 4c 69 74 65 20  cking in SQLite 
21a0: 69 73 20 76 65 72 79 20 63 6f 75 72 73 65 2d 67  is very course-g
21b0: 72 61 69 6e 65 64 2e 20 20 53 51 4c 69 74 65 20  rained.  SQLite 
21c0: 6c 6f 63 6b 73 20 74 68 65 0a 20 20 65 6e 74 69  locks the.  enti
21d0: 72 65 20 64 61 74 61 62 61 73 65 2e 20 20 42 69  re database.  Bi
21e0: 67 20 64 61 74 61 62 61 73 65 20 73 65 72 76 65  g database serve
21f0: 72 73 20 28 50 6f 73 74 67 72 65 53 51 4c 2c 20  rs (PostgreSQL, 
2200: 4f 72 61 63 6c 65 2c 20 65 74 63 2e 29 0a 20 20  Oracle, etc.).  
2210: 67 65 6e 65 72 61 6c 6c 79 20 68 61 76 65 20 66  generally have f
2220: 69 6e 65 72 20 67 72 61 69 6e 65 64 20 6c 6f 63  iner grained loc
2230: 6b 69 6e 67 2c 20 73 75 63 68 20 61 73 20 6c 6f  king, such as lo
2240: 63 6b 69 6e 67 20 6f 6e 20 61 20 73 69 6e 67 6c  cking on a singl
2250: 65 0a 20 20 74 61 62 6c 65 20 6f 72 20 61 20 73  e.  table or a s
2260: 69 6e 67 6c 65 20 72 6f 77 20 77 69 74 68 69 6e  ingle row within
2270: 20 61 20 74 61 62 6c 65 2e 20 20 49 66 20 79 6f   a table.  If yo
2280: 75 20 68 61 76 65 20 61 20 6d 61 73 73 69 76 65  u have a massive
2290: 6c 79 0a 20 20 70 61 72 61 6c 6c 65 6c 20 64 61  ly.  parallel da
22a0: 74 61 62 61 73 65 20 61 70 70 6c 69 63 61 74 69  tabase applicati
22b0: 6f 6e 2c 20 79 6f 75 20 73 68 6f 75 6c 64 20 63  on, you should c
22c0: 6f 6e 73 69 64 65 72 20 75 73 69 6e 67 20 61 20  onsider using a 
22d0: 62 69 67 20 64 61 74 61 62 61 73 65 0a 20 20 73  big database.  s
22e0: 65 72 76 65 72 20 69 6e 73 74 65 61 64 20 6f 66  erver instead of
22f0: 20 53 51 4c 69 74 65 2e 3c 2f 70 3e 0a 0a 20 20   SQLite.</p>..  
2300: 3c 70 3e 57 68 65 6e 20 53 51 4c 69 74 65 20 74  <p>When SQLite t
2310: 72 69 65 73 20 74 6f 20 61 63 63 65 73 73 20 61  ries to access a
2320: 20 66 69 6c 65 20 74 68 61 74 20 69 73 20 6c 6f   file that is lo
2330: 63 6b 65 64 20 62 79 20 61 6e 6f 74 68 65 72 0a  cked by another.
2340: 20 20 70 72 6f 63 65 73 73 2c 20 74 68 65 20 64    process, the d
2350: 65 66 61 75 6c 74 20 62 65 68 61 76 69 6f 72 20  efault behavior 
2360: 69 73 20 74 6f 20 72 65 74 75 72 6e 20 53 51 4c  is to return SQL
2370: 49 54 45 5f 42 55 53 59 2e 20 20 59 6f 75 20 63  ITE_BUSY.  You c
2380: 61 6e 0a 20 20 61 64 6a 75 73 74 20 74 68 69 73  an.  adjust this
2390: 20 62 65 68 61 76 69 6f 72 20 66 72 6f 6d 20 43   behavior from C
23a0: 20 63 6f 64 65 20 75 73 69 6e 67 20 74 68 65 20   code using the 
23b0: 3c 62 3e 73 71 6c 69 74 65 5f 62 75 73 79 5f 68  <b>sqlite_busy_h
23c0: 61 6e 64 6c 65 72 28 29 3c 2f 62 3e 20 6f 72 0a  andler()</b> or.
23d0: 20 20 3c 62 3e 73 71 6c 69 74 65 5f 62 75 73 79    <b>sqlite_busy
23e0: 5f 74 69 6d 65 6f 75 74 28 29 3c 2f 62 3e 20 41  _timeout()</b> A
23f0: 50 49 20 66 75 6e 63 74 69 6f 6e 73 2e 20 20 53  PI functions.  S
2400: 65 65 20 74 68 65 20 41 50 49 20 64 6f 63 75 6d  ee the API docum
2410: 65 6e 74 61 74 69 6f 6e 0a 20 20 66 6f 72 20 64  entation.  for d
2420: 65 74 61 69 6c 73 2e 3c 2f 70 3e 0a 0a 20 20 3c  etails.</p>..  <
2430: 70 3e 49 66 20 74 77 6f 20 6f 72 20 6d 6f 72 65  p>If two or more
2440: 20 70 72 6f 63 65 73 73 65 73 20 68 61 76 65 20   processes have 
2450: 74 68 65 20 73 61 6d 65 20 64 61 74 61 62 61 73  the same databas
2460: 65 20 6f 70 65 6e 20 61 6e 64 20 6f 6e 65 0a 20  e open and one. 
2470: 20 70 72 6f 63 65 73 73 20 63 72 65 61 74 65 73   process creates
2480: 20 61 20 6e 65 77 20 74 61 62 6c 65 20 6f 72 20   a new table or 
2490: 69 6e 64 65 78 2c 20 74 68 65 20 6f 74 68 65 72  index, the other
24a0: 20 70 72 6f 63 65 73 73 65 73 20 6d 69 67 68 74   processes might
24b0: 0a 20 20 6e 6f 74 20 62 65 20 61 62 6c 65 20 74  .  not be able t
24c0: 6f 20 73 65 65 20 74 68 65 20 6e 65 77 20 74 61  o see the new ta
24d0: 62 6c 65 20 72 69 67 68 74 20 61 77 61 79 2e 20  ble right away. 
24e0: 20 59 6f 75 20 6d 69 67 68 74 20 68 61 76 65 20   You might have 
24f0: 74 6f 0a 20 20 67 65 74 20 74 68 65 20 6f 74 68  to.  get the oth
2500: 65 72 20 70 72 6f 63 65 73 73 65 73 20 74 6f 20  er processes to 
2510: 63 6c 6f 73 65 20 61 6e 64 20 72 65 6f 70 65 6e  close and reopen
2520: 20 74 68 65 69 72 20 63 6f 6e 6e 65 63 74 69 6f   their connectio
2530: 6e 20 74 6f 0a 20 20 74 68 65 20 64 61 74 61 62  n to.  the datab
2540: 61 73 65 20 62 65 66 6f 72 65 20 74 68 65 79 20  ase before they 
2550: 77 69 6c 6c 20 62 65 20 61 62 6c 65 20 74 6f 20  will be able to 
2560: 73 65 65 20 74 68 65 20 6e 65 77 20 74 61 62 6c  see the new tabl
2570: 65 2e 3c 2f 70 3e 0a 7d 0a 0a 66 61 71 20 7b 0a  e.</p>.}..faq {.
2580: 20 20 49 73 20 53 51 4c 69 74 65 20 74 68 72 65    Is SQLite thre
2590: 61 64 73 61 66 65 3f 0a 7d 20 7b 0a 20 20 3c 70  adsafe?.} {.  <p
25a0: 3e 59 65 73 2e 20 20 53 6f 6d 65 74 69 6d 65 73  >Yes.  Sometimes
25b0: 2e 20 20 49 6e 20 6f 72 64 65 72 20 74 6f 20 62  .  In order to b
25c0: 65 20 74 68 72 65 61 64 2d 73 61 66 65 2c 20 53  e thread-safe, S
25d0: 51 4c 69 74 65 20 6d 75 73 74 20 62 65 20 63 6f  QLite must be co
25e0: 6d 70 69 6c 65 64 0a 20 20 77 69 74 68 20 74 68  mpiled.  with th
25f0: 65 20 54 48 52 45 41 44 53 41 46 45 20 70 72 65  e THREADSAFE pre
2600: 70 72 6f 63 65 73 73 6f 72 20 6d 61 63 72 6f 20  processor macro 
2610: 73 65 74 20 74 6f 20 31 2e 20 20 49 6e 20 74 68  set to 1.  In th
2620: 65 20 64 65 66 61 75 6c 74 0a 20 20 64 69 73 74  e default.  dist
2630: 72 69 62 75 74 69 6f 6e 2c 20 74 68 65 20 77 69  ribution, the wi
2640: 6e 64 6f 77 73 20 62 69 6e 61 72 69 65 73 20 61  ndows binaries a
2650: 72 65 20 63 6f 6d 70 69 6c 65 64 20 74 6f 20 62  re compiled to b
2660: 65 20 74 68 72 65 61 64 73 61 66 65 20 62 75 74  e threadsafe but
2670: 0a 20 20 74 68 65 20 6c 69 6e 75 78 20 62 69 6e  .  the linux bin
2680: 61 72 69 65 73 20 61 72 65 20 6e 6f 74 2e 20 20  aries are not.  
2690: 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63  If you want to c
26a0: 68 61 6e 67 65 20 74 68 69 73 2c 20 79 6f 75 27  hange this, you'
26b0: 6c 6c 20 68 61 76 65 20 74 6f 0a 20 20 72 65 63  ll have to.  rec
26c0: 6f 6d 70 69 6c 65 2e 3c 2f 70 3e 0a 0a 20 20 3c  ompile.</p>..  <
26d0: 70 3e 22 54 68 72 65 61 64 73 61 66 65 22 20 69  p>"Threadsafe" i
26e0: 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 70  n the previous p
26f0: 61 72 61 67 72 61 70 68 20 6d 65 61 6e 73 20 74  aragraph means t
2700: 68 61 74 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20  hat two or more 
2710: 74 68 72 65 61 64 73 0a 20 20 63 61 6e 20 72 75  threads.  can ru
2720: 6e 20 53 51 4c 69 74 65 20 61 74 20 74 68 65 20  n SQLite at the 
2730: 73 61 6d 65 20 74 69 6d 65 20 6f 6e 20 64 69 66  same time on dif
2740: 66 65 72 65 6e 74 20 22 3c 62 3e 73 71 6c 69 74  ferent "<b>sqlit
2750: 65 3c 2f 62 3e 22 20 73 74 72 75 63 74 75 72 65  e</b>" structure
2760: 73 0a 20 20 72 65 74 75 72 6e 65 64 20 66 72 6f  s.  returned fro
2770: 6d 20 73 65 70 61 72 61 74 65 20 63 61 6c 6c 73  m separate calls
2780: 20 74 6f 20 3c 62 3e 73 71 6c 69 74 65 5f 6f 70   to <b>sqlite_op
2790: 65 6e 28 29 3c 2f 62 3e 2e 20 20 49 74 20 69 73  en()</b>.  It is
27a0: 20 6e 65 76 65 72 20 73 61 66 65 0a 20 20 74 6f   never safe.  to
27b0: 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 3c 62   use the same <b
27c0: 3e 73 71 6c 69 74 65 3c 2f 62 3e 20 73 74 72 75  >sqlite</b> stru
27d0: 63 74 75 72 65 20 70 6f 69 6e 74 65 72 20 73 69  cture pointer si
27e0: 6d 75 6c 74 61 6e 65 6f 75 73 6c 79 20 69 6e 20  multaneously in 
27f0: 74 77 6f 0a 20 20 6f 72 20 6d 6f 72 65 20 74 68  two.  or more th
2800: 72 65 61 64 73 2e 3c 2f 70 3e 0a 0a 20 20 3c 70  reads.</p>..  <p
2810: 3e 4e 6f 74 65 20 74 68 61 74 20 69 66 20 74 77  >Note that if tw
2820: 6f 20 6f 72 20 6d 6f 72 65 20 74 68 72 65 61 64  o or more thread
2830: 73 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20  s have the same 
2840: 64 61 74 61 62 61 73 65 20 6f 70 65 6e 20 61 6e  database open an
2850: 64 20 6f 6e 65 0a 20 20 74 68 72 65 61 64 20 63  d one.  thread c
2860: 72 65 61 74 65 73 20 61 20 6e 65 77 20 74 61 62  reates a new tab
2870: 6c 65 20 6f 72 20 69 6e 64 65 78 2c 20 74 68 65  le or index, the
2880: 20 6f 74 68 65 72 20 74 68 72 65 61 64 73 20 6d   other threads m
2890: 69 67 68 74 0a 20 20 6e 6f 74 20 62 65 20 61 62  ight.  not be ab
28a0: 6c 65 20 74 6f 20 73 65 65 20 74 68 65 20 6e 65  le to see the ne
28b0: 77 20 74 61 62 6c 65 20 72 69 67 68 74 20 61 77  w table right aw
28c0: 61 79 2e 20 20 59 6f 75 20 6d 69 67 68 74 20 68  ay.  You might h
28d0: 61 76 65 20 74 6f 0a 20 20 67 65 74 20 74 68 65  ave to.  get the
28e0: 20 6f 74 68 65 72 20 74 68 72 65 61 64 73 20 74   other threads t
28f0: 6f 20 63 6c 6f 73 65 20 61 6e 64 20 72 65 6f 70  o close and reop
2900: 65 6e 20 74 68 65 69 72 20 63 6f 6e 6e 65 63 74  en their connect
2910: 69 6f 6e 20 74 6f 0a 20 20 74 68 65 20 64 61 74  ion to.  the dat
2920: 61 62 61 73 65 20 62 65 66 6f 72 65 20 74 68 65  abase before the
2930: 79 20 77 69 6c 6c 20 62 65 20 61 62 6c 65 20 74  y will be able t
2940: 6f 20 73 65 65 20 74 68 65 20 6e 65 77 20 74 61  o see the new ta
2950: 62 6c 65 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 55  ble.</p>..  <p>U
2960: 6e 64 65 72 20 55 4e 49 58 2c 20 79 6f 75 20 73  nder UNIX, you s
2970: 68 6f 75 6c 64 20 6e 6f 74 20 63 61 72 72 79 20  hould not carry 
2980: 61 6e 20 6f 70 65 6e 20 53 51 4c 69 74 65 20 64  an open SQLite d
2990: 61 74 61 62 61 73 65 20 61 63 72 6f 73 73 0a 20  atabase across. 
29a0: 20 61 20 66 6f 72 6b 28 29 20 73 79 73 74 65 6d   a fork() system
29b0: 20 63 61 6c 6c 20 69 6e 74 6f 20 74 68 65 20 63   call into the c
29c0: 68 69 6c 64 20 70 72 6f 63 65 73 73 2e 20 20 50  hild process.  P
29d0: 72 6f 62 6c 65 6d 73 20 77 69 6c 6c 20 72 65 73  roblems will res
29e0: 75 6c 74 0a 20 20 69 66 20 79 6f 75 20 64 6f 2e  ult.  if you do.
29f0: 3c 2f 70 3e 0a 7d 0a 0a 66 61 71 20 7b 0a 20 20  </p>.}..faq {.  
2a00: 48 6f 77 20 64 6f 20 49 20 6c 69 73 74 20 61 6c  How do I list al
2a10: 6c 20 74 61 62 6c 65 73 2f 69 6e 64 69 63 65 73  l tables/indices
2a20: 20 63 6f 6e 74 61 69 6e 65 64 20 69 6e 20 61 6e   contained in an
2a30: 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65   SQLite database
2a40: 0a 7d 20 7b 0a 20 20 3c 70 3e 49 66 20 79 6f 75  .} {.  <p>If you
2a50: 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 74 68 65   are running the
2a60: 20 3c 62 3e 73 71 6c 69 74 65 3c 2f 62 3e 20 63   <b>sqlite</b> c
2a70: 6f 6d 6d 61 6e 64 2d 6c 69 6e 65 20 61 63 63 65  ommand-line acce
2a80: 73 73 20 70 72 6f 67 72 61 6d 0a 20 20 79 6f 75  ss program.  you
2a90: 20 63 61 6e 20 74 79 70 65 20 22 3c 62 3e 2e 74   can type "<b>.t
2aa0: 61 62 6c 65 73 3c 2f 62 3e 22 20 74 6f 20 67 65  ables</b>" to ge
2ab0: 74 20 61 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20  t a list of all 
2ac0: 74 61 62 6c 65 73 2e 20 20 4f 72 20 79 6f 75 0a  tables.  Or you.
2ad0: 20 20 63 61 6e 20 74 79 70 65 20 22 3c 62 3e 2e    can type "<b>.
2ae0: 73 63 68 65 6d 61 3c 2f 62 3e 22 20 74 6f 20 73  schema</b>" to s
2af0: 65 65 20 74 68 65 20 63 6f 6d 70 6c 65 74 65 20  ee the complete 
2b00: 64 61 74 61 62 61 73 65 20 73 63 68 65 6d 61 20  database schema 
2b10: 69 6e 63 6c 75 64 69 6e 67 0a 20 20 61 6c 6c 20  including.  all 
2b20: 74 61 62 6c 65 73 20 61 6e 64 20 69 6e 64 69 63  tables and indic
2b30: 65 73 2e 20 20 45 69 74 68 65 72 20 6f 66 20 74  es.  Either of t
2b40: 68 65 73 65 20 63 6f 6d 6d 61 6e 64 73 20 63 61  hese commands ca
2b50: 6e 20 62 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79  n be followed by
2b60: 0a 20 20 61 20 4c 49 4b 45 20 70 61 74 74 65 72  .  a LIKE patter
2b70: 6e 20 74 68 61 74 20 77 69 6c 6c 20 72 65 73 74  n that will rest
2b80: 72 69 63 74 20 74 68 65 20 74 61 62 6c 65 73 20  rict the tables 
2b90: 74 68 61 74 20 61 72 65 20 64 69 73 70 6c 61 79  that are display
2ba0: 65 64 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 46 72  ed.</p>..  <p>Fr
2bb0: 6f 6d 20 77 69 74 68 69 6e 20 61 20 43 2f 43 2b  om within a C/C+
2bc0: 2b 20 70 72 6f 67 72 61 6d 20 28 6f 72 20 61 20  + program (or a 
2bd0: 73 63 72 69 70 74 20 75 73 69 6e 67 20 54 63 6c  script using Tcl
2be0: 2f 52 75 62 79 2f 50 65 72 6c 2f 50 79 74 68 6f  /Ruby/Perl/Pytho
2bf0: 6e 0a 20 20 62 69 6e 64 69 6e 67 73 29 20 79 6f  n.  bindings) yo
2c00: 75 20 63 61 6e 20 67 65 74 20 61 63 63 65 73 73  u can get access
2c10: 20 74 6f 20 74 61 62 6c 65 20 61 6e 64 20 69 6e   to table and in
2c20: 64 65 78 20 6e 61 6d 65 73 20 62 79 20 64 6f 69  dex names by doi
2c30: 6e 67 20 61 20 53 45 4c 45 43 54 0a 20 20 6f 6e  ng a SELECT.  on
2c40: 20 61 20 73 70 65 63 69 61 6c 20 74 61 62 6c 65   a special table
2c50: 20 6e 61 6d 65 64 20 22 3c 62 3e 53 51 4c 49 54   named "<b>SQLIT
2c60: 45 5f 4d 41 53 54 45 52 3c 2f 62 3e 22 2e 20 20  E_MASTER</b>".  
2c70: 45 76 65 72 79 20 53 51 4c 69 74 65 20 64 61 74  Every SQLite dat
2c80: 61 62 61 73 65 0a 20 20 68 61 73 20 61 6e 20 53  abase.  has an S
2c90: 51 4c 49 54 45 5f 4d 41 53 54 45 52 20 74 61 62  QLITE_MASTER tab
2ca0: 6c 65 20 74 68 61 74 20 64 65 66 69 6e 65 73 20  le that defines 
2cb0: 74 68 65 20 73 63 68 65 6d 61 20 66 6f 72 20 74  the schema for t
2cc0: 68 65 20 64 61 74 61 62 61 73 65 2e 0a 20 20 54  he database..  T
2cd0: 68 65 20 53 51 4c 49 54 45 5f 4d 41 53 54 45 52  he SQLITE_MASTER
2ce0: 20 74 61 62 6c 65 20 6c 6f 6f 6b 73 20 6c 69 6b   table looks lik
2cf0: 65 20 74 68 69 73 3a 3c 2f 70 3e 0a 3c 62 6c 6f  e this:</p>.<blo
2d00: 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 43 52  ckquote><pre>.CR
2d10: 45 41 54 45 20 54 41 42 4c 45 20 73 71 6c 69 74  EATE TABLE sqlit
2d20: 65 5f 6d 61 73 74 65 72 20 28 0a 20 20 74 79 70  e_master (.  typ
2d30: 65 20 54 45 58 54 2c 0a 20 20 6e 61 6d 65 20 54  e TEXT,.  name T
2d40: 45 58 54 2c 0a 20 20 74 62 6c 5f 6e 61 6d 65 20  EXT,.  tbl_name 
2d50: 54 45 58 54 2c 0a 20 20 72 6f 6f 74 70 61 67 65  TEXT,.  rootpage
2d60: 20 49 4e 54 45 47 45 52 2c 0a 20 20 73 71 6c 20   INTEGER,.  sql 
2d70: 54 45 58 54 0a 29 3b 0a 3c 2f 70 72 65 3e 3c 2f  TEXT.);.</pre></
2d80: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 3c 70  blockquote>.  <p
2d90: 3e 46 6f 72 20 74 61 62 6c 65 73 2c 20 74 68 65  >For tables, the
2da0: 20 3c 62 3e 74 79 70 65 3c 2f 62 3e 20 66 69 65   <b>type</b> fie
2db0: 6c 64 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62  ld will always b
2dc0: 65 20 3c 62 3e 27 74 61 62 6c 65 27 3c 2f 62 3e  e <b>'table'</b>
2dd0: 20 61 6e 64 20 74 68 65 0a 20 20 3c 62 3e 6e 61   and the.  <b>na
2de0: 6d 65 3c 2f 62 3e 20 66 69 65 6c 64 20 77 69 6c  me</b> field wil
2df0: 6c 20 62 65 20 74 68 65 20 6e 61 6d 65 20 6f 66  l be the name of
2e00: 20 74 68 65 20 74 61 62 6c 65 2e 20 20 53 6f 20   the table.  So 
2e10: 74 6f 20 67 65 74 20 61 20 6c 69 73 74 20 6f 66  to get a list of
2e20: 0a 20 20 61 6c 6c 20 74 61 62 6c 65 73 20 69 6e  .  all tables in
2e30: 20 74 68 65 20 64 61 74 61 62 61 73 65 2c 20 75   the database, u
2e40: 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  se the following
2e50: 20 53 45 4c 45 43 54 20 63 6f 6d 6d 61 6e 64 3a   SELECT command:
2e60: 3c 2f 70 3e 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  </p>.<blockquote
2e70: 3e 3c 70 72 65 3e 0a 53 45 4c 45 43 54 20 6e 61  ><pre>.SELECT na
2e80: 6d 65 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f 6d  me FROM sqlite_m
2e90: 61 73 74 65 72 0a 57 48 45 52 45 20 74 79 70 65  aster.WHERE type
2ea0: 3d 27 74 61 62 6c 65 27 0a 4f 52 44 45 52 20 42  ='table'.ORDER B
2eb0: 59 20 6e 61 6d 65 3b 0a 3c 2f 70 72 65 3e 3c 2f  Y name;.</pre></
2ec0: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 3c 70  blockquote>.  <p
2ed0: 3e 46 6f 72 20 69 6e 64 69 63 65 73 2c 20 3c 62  >For indices, <b
2ee0: 3e 74 79 70 65 3c 2f 62 3e 20 69 73 20 65 71 75  >type</b> is equ
2ef0: 61 6c 20 74 6f 20 3c 62 3e 27 69 6e 64 65 78 27  al to <b>'index'
2f00: 3c 2f 62 3e 2c 20 3c 62 3e 6e 61 6d 65 3c 2f 62  </b>, <b>name</b
2f10: 3e 20 69 73 20 74 68 65 0a 20 20 6e 61 6d 65 20  > is the.  name 
2f20: 6f 66 20 74 68 65 20 69 6e 64 65 78 20 61 6e 64  of the index and
2f30: 20 3c 62 3e 74 62 6c 5f 6e 61 6d 65 3c 2f 62 3e   <b>tbl_name</b>
2f40: 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20   is the name of 
2f50: 74 68 65 20 74 61 62 6c 65 20 74 6f 20 77 68 69  the table to whi
2f60: 63 68 0a 20 20 74 68 65 20 69 6e 64 65 78 20 62  ch.  the index b
2f70: 65 6c 6f 6e 67 73 2e 20 20 46 6f 72 20 62 6f 74  elongs.  For bot
2f80: 68 20 74 61 62 6c 65 73 20 61 6e 64 20 69 6e 64  h tables and ind
2f90: 69 63 65 73 2c 20 74 68 65 20 3c 62 3e 73 71 6c  ices, the <b>sql
2fa0: 3c 2f 62 3e 20 66 69 65 6c 64 20 69 73 0a 20 20  </b> field is.  
2fb0: 74 68 65 20 74 65 78 74 20 6f 66 20 74 68 65 20  the text of the 
2fc0: 6f 72 69 67 69 6e 61 6c 20 43 52 45 41 54 45 20  original CREATE 
2fd0: 54 41 42 4c 45 20 6f 72 20 43 52 45 41 54 45 20  TABLE or CREATE 
2fe0: 49 4e 44 45 58 20 73 74 61 74 65 6d 65 6e 74 20  INDEX statement 
2ff0: 74 68 61 74 0a 20 20 63 72 65 61 74 65 64 20 74  that.  created t
3000: 68 65 20 74 61 62 6c 65 20 6f 72 20 69 6e 64 65  he table or inde
3010: 78 2e 20 20 46 6f 72 20 61 75 74 6f 6d 61 74 69  x.  For automati
3020: 63 61 6c 6c 79 20 63 72 65 61 74 65 64 20 69 6e  cally created in
3030: 64 69 63 65 73 20 28 75 73 65 64 0a 20 20 74 6f  dices (used.  to
3040: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 50   implement the P
3050: 52 49 4d 41 52 59 20 4b 45 59 20 6f 72 20 55 4e  RIMARY KEY or UN
3060: 49 51 55 45 20 63 6f 6e 73 74 72 61 69 6e 74 73  IQUE constraints
3070: 29 20 74 68 65 20 3c 62 3e 73 71 6c 3c 2f 62 3e  ) the <b>sql</b>
3080: 20 66 69 65 6c 64 0a 20 20 69 73 20 4e 55 4c 4c   field.  is NULL
3090: 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 54 68 65 20  .</p>..  <p>The 
30a0: 53 51 4c 49 54 45 5f 4d 41 53 54 45 52 20 74 61  SQLITE_MASTER ta
30b0: 62 6c 65 20 69 73 20 72 65 61 64 2d 6f 6e 6c 79  ble is read-only
30c0: 2e 20 20 59 6f 75 20 63 61 6e 6e 6f 74 20 63 68  .  You cannot ch
30d0: 61 6e 67 65 20 74 68 69 73 20 74 61 62 6c 65 0a  ange this table.
30e0: 20 20 75 73 69 6e 67 20 55 50 44 41 54 45 2c 20    using UPDATE, 
30f0: 49 4e 53 45 52 54 2c 20 6f 72 20 44 45 4c 45 54  INSERT, or DELET
3100: 45 2e 20 20 54 68 65 20 74 61 62 6c 65 20 69 73  E.  The table is
3110: 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 75   automatically u
3120: 70 64 61 74 65 64 20 62 79 0a 20 20 43 52 45 41  pdated by.  CREA
3130: 54 45 20 54 41 42 4c 45 2c 20 43 52 45 41 54 45  TE TABLE, CREATE
3140: 20 49 4e 44 45 58 2c 20 44 52 4f 50 20 54 41 42   INDEX, DROP TAB
3150: 4c 45 2c 20 61 6e 64 20 44 52 4f 50 20 49 4e 44  LE, and DROP IND
3160: 45 58 20 63 6f 6d 6d 61 6e 64 73 2e 3c 2f 70 3e  EX commands.</p>
3170: 0a 0a 20 20 3c 70 3e 54 65 6d 70 6f 72 61 72 79  ..  <p>Temporary
3180: 20 74 61 62 6c 65 73 20 64 6f 20 6e 6f 74 20 61   tables do not a
3190: 70 70 65 61 72 20 69 6e 20 74 68 65 20 53 51 4c  ppear in the SQL
31a0: 49 54 45 5f 4d 41 53 54 45 52 20 74 61 62 6c 65  ITE_MASTER table
31b0: 2e 20 20 54 65 6d 70 6f 72 61 72 79 0a 20 20 74  .  Temporary.  t
31c0: 61 62 6c 65 73 20 61 6e 64 20 74 68 65 69 72 20  ables and their 
31d0: 69 6e 64 69 63 65 73 20 61 6e 64 20 74 72 69 67  indices and trig
31e0: 67 65 72 73 20 6f 63 63 75 72 20 69 6e 20 61 6e  gers occur in an
31f0: 6f 74 68 65 72 20 73 70 65 63 69 61 6c 20 74 61  other special ta
3200: 62 6c 65 0a 20 20 6e 61 6d 65 64 20 53 51 4c 49  ble.  named SQLI
3210: 54 45 5f 54 45 4d 50 5f 4d 41 53 54 45 52 2e 20  TE_TEMP_MASTER. 
3220: 20 53 51 4c 49 54 45 5f 54 45 4d 50 5f 4d 41 53   SQLITE_TEMP_MAS
3230: 54 45 52 20 77 6f 72 6b 73 20 6a 75 73 74 20 6c  TER works just l
3240: 69 6b 65 20 53 51 4c 49 54 45 5f 4d 41 53 54 45  ike SQLITE_MASTE
3250: 52 0a 20 20 65 78 63 65 70 74 20 74 68 61 74 20  R.  except that 
3260: 69 74 20 69 73 20 6f 6e 6c 79 20 76 69 73 69 62  it is only visib
3270: 6c 65 20 74 6f 20 74 68 65 20 61 70 70 6c 69 63  le to the applic
3280: 61 74 69 6f 6e 20 74 68 61 74 20 63 72 65 61 74  ation that creat
3290: 65 64 20 74 68 65 20 0a 20 20 74 65 6d 70 6f 72  ed the .  tempor
32a0: 61 72 79 20 74 61 62 6c 65 73 2e 20 20 54 6f 20  ary tables.  To 
32b0: 67 65 74 20 61 20 6c 69 73 74 20 6f 66 20 61 6c  get a list of al
32c0: 6c 20 74 61 62 6c 65 73 2c 20 62 6f 74 68 20 70  l tables, both p
32d0: 65 72 6d 61 6e 65 6e 74 20 61 6e 64 0a 20 20 74  ermanent and.  t
32e0: 65 6d 70 6f 72 61 72 79 2c 20 6f 6e 65 20 63 61  emporary, one ca
32f0: 6e 20 75 73 65 20 61 20 63 6f 6d 6d 61 6e 64 20  n use a command 
3300: 73 69 6d 69 6c 61 72 20 74 6f 20 74 68 65 20 66  similar to the f
3310: 6f 6c 6c 6f 77 69 6e 67 3a 0a 3c 62 6c 6f 63 6b  ollowing:.<block
3320: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 53 45 4c 45  quote><pre>.SELE
3330: 43 54 20 6e 61 6d 65 20 46 52 4f 4d 20 0a 20 20  CT name FROM .  
3340: 20 28 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20   (SELECT * FROM 
3350: 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 20 55 4e  sqlite_master UN
3360: 49 4f 4e 20 41 4c 4c 0a 20 20 20 20 53 45 4c 45  ION ALL.    SELE
3370: 43 54 20 2a 20 46 52 4f 4d 20 73 71 6c 69 74 65  CT * FROM sqlite
3380: 5f 74 65 6d 70 5f 6d 61 73 74 65 72 29 0a 57 48  _temp_master).WH
3390: 45 52 45 20 74 79 70 65 3d 27 74 61 62 6c 65 27  ERE type='table'
33a0: 0a 4f 52 44 45 52 20 42 59 20 6e 61 6d 65 0a 3c  .ORDER BY name.<
33b0: 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
33c0: 65 3e 0a 7d 0a 0a 66 61 71 20 7b 0a 20 20 41 72  e>.}..faq {.  Ar
33d0: 65 20 74 68 65 72 65 20 61 6e 79 20 6b 6e 6f 77  e there any know
33e0: 6e 20 73 69 7a 65 20 6c 69 6d 69 74 73 20 74 6f  n size limits to
33f0: 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65   SQLite database
3400: 73 3f 0a 7d 20 7b 0a 20 20 3c 70 3e 41 73 20 6f  s?.} {.  <p>As o
3410: 66 20 76 65 72 73 69 6f 6e 20 32 2e 37 2e 34 2c  f version 2.7.4,
3420: 20 0a 20 20 53 51 4c 69 74 65 20 63 61 6e 20 68   .  SQLite can h
3430: 61 6e 64 6c 65 20 64 61 74 61 62 61 73 65 73 20  andle databases 
3440: 75 70 20 74 6f 20 32 3c 73 75 70 3e 34 31 3c 2f  up to 2<sup>41</
3450: 73 75 70 3e 20 62 79 74 65 73 20 28 32 20 74 65  sup> bytes (2 te
3460: 72 61 62 79 74 65 73 29 0a 20 20 69 6e 20 73 69  rabytes).  in si
3470: 7a 65 20 6f 6e 20 62 6f 74 68 20 57 69 6e 64 6f  ze on both Windo
3480: 77 73 20 61 6e 64 20 55 6e 69 78 2e 20 20 4f 6c  ws and Unix.  Ol
3490: 64 65 72 20 76 65 72 73 69 6f 6e 20 6f 66 20 53  der version of S
34a0: 51 4c 69 74 65 0a 20 20 77 65 72 65 20 6c 69 6d  QLite.  were lim
34b0: 69 74 65 64 20 74 6f 20 64 61 74 61 62 61 73 65  ited to database
34c0: 73 20 6f 66 20 32 3c 73 75 70 3e 33 31 3c 2f 73  s of 2<sup>31</s
34d0: 75 70 3e 20 62 79 74 65 73 20 28 32 20 67 69 67  up> bytes (2 gig
34e0: 61 62 79 74 65 73 29 2e 3c 2f 70 3e 0a 0a 20 20  abytes).</p>..  
34f0: 3c 70 3e 53 51 4c 69 74 65 20 76 65 72 73 69 6f  <p>SQLite versio
3500: 6e 20 32 2e 38 20 6c 69 6d 69 74 73 20 74 68 65  n 2.8 limits the
3510: 20 61 6d 6f 75 6e 74 20 6f 66 20 64 61 74 61 20   amount of data 
3520: 69 6e 20 6f 6e 65 20 72 6f 77 20 74 6f 20 0a 20  in one row to . 
3530: 20 31 20 6d 65 67 61 62 79 74 65 2e 20 20 53 51   1 megabyte.  SQ
3540: 4c 69 74 65 20 76 65 72 73 69 6f 6e 20 33 2e 30  Lite version 3.0
3550: 20 68 61 73 20 6e 6f 20 6c 69 6d 69 74 20 6f 6e   has no limit on
3560: 20 74 68 65 20 61 6d 6f 75 6e 74 20 6f 66 0a 20   the amount of. 
3570: 20 64 61 74 61 20 74 68 61 74 20 63 61 6e 20 62   data that can b
3580: 65 20 73 74 6f 72 65 64 20 69 6e 20 61 20 73 69  e stored in a si
3590: 6e 67 6c 65 20 72 6f 77 2e 0a 20 20 3c 2f 70 3e  ngle row..  </p>
35a0: 0a 0a 20 20 3c 70 3e 54 68 65 20 6e 61 6d 65 73  ..  <p>The names
35b0: 20 6f 66 20 74 61 62 6c 65 73 2c 20 69 6e 64 69   of tables, indi
35c0: 63 65 73 2c 20 76 69 65 77 2c 20 74 72 69 67 67  ces, view, trigg
35d0: 65 72 73 2c 20 61 6e 64 20 63 6f 6c 75 6d 6e 73  ers, and columns
35e0: 20 63 61 6e 20 62 65 0a 20 20 61 73 20 6c 6f 6e   can be.  as lon
35f0: 67 20 61 73 20 64 65 73 69 72 65 64 2e 20 20 48  g as desired.  H
3600: 6f 77 65 76 65 72 2c 20 74 68 65 20 6e 61 6d 65  owever, the name
3610: 73 20 6f 66 20 53 51 4c 20 66 75 6e 63 74 69 6f  s of SQL functio
3620: 6e 73 20 28 61 73 20 63 72 65 61 74 65 64 0a 20  ns (as created. 
3630: 20 62 79 20 74 68 65 20 3c 61 20 68 72 65 66 3d   by the <a href=
3640: 22 63 5f 69 6e 74 65 72 66 61 63 65 2e 68 74 6d  "c_interface.htm
3650: 6c 23 63 66 75 6e 63 22 3e 73 71 6c 69 74 65 5f  l#cfunc">sqlite_
3660: 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e 28  create_function(
3670: 29 3c 2f 61 3e 20 41 50 49 29 0a 20 20 6d 61 79  )</a> API).  may
3680: 20 6e 6f 74 20 65 78 63 65 65 64 20 32 35 35 20   not exceed 255 
3690: 63 68 61 72 61 63 74 65 72 73 20 69 6e 20 6c 65  characters in le
36a0: 6e 67 74 68 2e 3c 2f 70 3e 0a 7d 0a 0a 66 61 71  ngth.</p>.}..faq
36b0: 20 7b 0a 20 20 57 68 61 74 20 69 73 20 74 68 65   {.  What is the
36c0: 20 6d 61 78 69 6d 75 6d 20 73 69 7a 65 20 6f 66   maximum size of
36d0: 20 61 20 56 41 52 43 48 41 52 20 69 6e 20 53 51   a VARCHAR in SQ
36e0: 4c 69 74 65 3f 0a 7d 20 7b 0a 20 20 3c 70 3e 53  Lite?.} {.  <p>S
36f0: 51 4c 69 74 65 20 64 6f 65 73 20 6e 6f 74 20 65  QLite does not e
3700: 6e 66 6f 72 63 65 20 64 61 74 61 74 79 70 65 20  nforce datatype 
3710: 63 6f 6e 73 74 72 61 69 6e 74 73 2e 0a 20 20 41  constraints..  A
3720: 20 56 41 52 43 48 41 52 20 63 6f 6c 75 6d 6e 20   VARCHAR column 
3730: 63 61 6e 20 68 6f 6c 64 20 61 73 20 6d 75 63 68  can hold as much
3740: 20 64 61 74 61 20 61 73 20 79 6f 75 20 63 61 72   data as you car
3750: 65 20 74 6f 20 70 75 74 20 69 74 20 69 6e 2e 3c  e to put it in.<
3760: 2f 70 3e 0a 7d 0a 0a 66 61 71 20 7b 0a 20 20 44  /p>.}..faq {.  D
3770: 6f 65 73 20 53 51 4c 69 74 65 20 73 75 70 70 6f  oes SQLite suppo
3780: 72 74 20 61 20 42 4c 4f 42 20 74 79 70 65 3f 0a  rt a BLOB type?.
3790: 7d 20 7b 0a 20 20 3c 70 3e 53 51 4c 69 74 65 20  } {.  <p>SQLite 
37a0: 76 65 72 73 69 6f 6e 20 33 2e 30 20 6c 65 74 73  version 3.0 lets
37b0: 20 79 6f 75 20 70 75 74 73 20 42 4c 4f 42 20 64   you puts BLOB d
37c0: 61 74 61 20 69 6e 74 6f 20 61 6e 79 20 63 6f 6c  ata into any col
37d0: 75 6d 6e 2c 20 65 76 65 6e 0a 20 20 63 6f 6c 75  umn, even.  colu
37e0: 6d 6e 73 20 74 68 61 74 20 61 72 65 20 64 65 63  mns that are dec
37f0: 6c 61 72 65 64 20 74 6f 20 68 6f 6c 64 20 73 6f  lared to hold so
3800: 6d 65 20 6f 74 68 65 72 20 74 79 70 65 2e 3c 2f  me other type.</
3810: 70 3e 0a 0a 20 20 3c 70 3e 53 51 4c 69 74 65 20  p>..  <p>SQLite 
3820: 76 65 72 73 69 6f 6e 20 32 2e 38 20 77 6f 75 6c  version 2.8 woul
3830: 64 20 68 6f 6c 64 20 73 74 6f 72 65 20 74 65 78  d hold store tex
3840: 74 20 64 61 74 61 20 77 69 74 68 6f 75 74 20 65  t data without e
3850: 6d 62 65 64 64 65 64 0a 20 20 27 5c 30 30 30 27  mbedded.  '\000'
3860: 20 63 68 61 72 61 63 74 65 72 73 2e 20 20 49 66   characters.  If
3870: 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 73 74 6f   you need to sto
3880: 72 65 20 42 4c 4f 42 20 64 61 74 61 20 69 6e 20  re BLOB data in 
3890: 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 0a 20  SQLite version. 
38a0: 20 32 2e 38 20 79 6f 75 27 6c 6c 20 77 61 6e 74   2.8 you'll want
38b0: 20 74 6f 20 65 6e 63 6f 64 65 20 74 68 61 74 20   to encode that 
38c0: 64 61 74 61 20 66 69 72 73 74 2e 0a 20 20 54 68  data first..  Th
38d0: 65 72 65 20 69 73 20 61 20 73 6f 75 72 63 65 20  ere is a source 
38e0: 66 69 6c 65 20 6e 61 6d 65 64 20 0a 20 20 22 3c  file named .  "<
38f0: 62 3e 73 72 63 2f 65 6e 63 6f 64 65 2e 63 3c 2f  b>src/encode.c</
3900: 62 3e 22 20 69 6e 20 74 68 65 20 53 51 4c 69 74  b>" in the SQLit
3910: 65 20 76 65 72 73 69 6f 6e 20 32 2e 38 20 64 69  e version 2.8 di
3920: 73 74 72 69 62 75 74 69 6f 6e 20 74 68 61 74 20  stribution that 
3930: 63 6f 6e 74 61 69 6e 73 0a 20 20 69 6d 70 6c 65  contains.  imple
3940: 6d 65 6e 74 61 74 69 6f 6e 73 20 6f 66 20 66 75  mentations of fu
3950: 6e 63 74 69 6f 6e 73 20 6e 61 6d 65 64 20 22 3c  nctions named "<
3960: 62 3e 73 71 6c 69 74 65 5f 65 6e 63 6f 64 65 5f  b>sqlite_encode_
3970: 62 69 6e 61 72 79 28 29 3c 2f 62 3e 0a 20 20 61  binary()</b>.  a
3980: 6e 64 20 3c 62 3e 73 71 6c 69 74 65 5f 64 65 63  nd <b>sqlite_dec
3990: 6f 64 65 5f 62 69 6e 61 72 79 28 29 3c 2f 62 3e  ode_binary()</b>
39a0: 20 74 68 61 74 20 63 61 6e 20 62 65 20 75 73 65   that can be use
39b0: 64 20 66 6f 72 20 63 6f 6e 76 65 72 74 69 6e 67  d for converting
39c0: 0a 20 20 62 69 6e 61 72 79 20 64 61 74 61 20 74  .  binary data t
39d0: 6f 20 41 53 43 49 49 20 61 6e 64 20 62 61 63 6b  o ASCII and back
39e0: 20 61 67 61 69 6e 2c 20 69 66 20 79 6f 75 20 6c   again, if you l
39f0: 69 6b 65 2e 3c 2f 70 3e 0a 0a 20 0a 7d 0a 0a 66  ike.</p>.. .}..f
3a00: 61 71 20 7b 0a 20 20 48 6f 77 20 64 6f 20 49 20  aq {.  How do I 
3a10: 61 64 64 20 6f 72 20 64 65 6c 65 74 65 20 63 6f  add or delete co
3a20: 6c 75 6d 6e 73 20 66 72 6f 6d 20 61 6e 20 65 78  lumns from an ex
3a30: 69 73 74 69 6e 67 20 74 61 62 6c 65 20 69 6e 20  isting table in 
3a40: 53 51 4c 69 74 65 2e 0a 7d 20 7b 0a 20 20 3c 70  SQLite..} {.  <p
3a50: 3e 53 51 4c 69 74 65 20 64 6f 65 73 20 79 65 73  >SQLite does yes
3a60: 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 74 68 65   not support the
3a70: 20 22 41 4c 54 45 52 20 54 41 42 4c 45 22 20 53   "ALTER TABLE" S
3a80: 51 4c 20 63 6f 6d 6d 61 6e 64 2e 20 20 49 66 20  QL command.  If 
3a90: 79 6f 75 0a 20 20 77 68 61 74 20 74 6f 20 63 68  you.  what to ch
3aa0: 61 6e 67 65 20 74 68 65 20 73 74 72 75 63 74 75  ange the structu
3ab0: 72 65 20 6f 66 20 61 20 74 61 62 6c 65 2c 20 79  re of a table, y
3ac0: 6f 75 20 68 61 76 65 20 74 6f 20 72 65 63 72 65  ou have to recre
3ad0: 61 74 65 20 74 68 65 0a 20 20 74 61 62 6c 65 2e  ate the.  table.
3ae0: 20 20 59 6f 75 20 63 61 6e 20 73 61 76 65 20 65    You can save e
3af0: 78 69 73 74 69 6e 67 20 64 61 74 61 20 74 6f 20  xisting data to 
3b00: 61 20 74 65 6d 70 6f 72 61 72 79 20 74 61 62 6c  a temporary tabl
3b10: 65 2c 20 64 72 6f 70 20 74 68 65 0a 20 20 6f 6c  e, drop the.  ol
3b20: 64 20 74 61 62 6c 65 2c 20 63 72 65 61 74 65 20  d table, create 
3b30: 74 68 65 20 6e 65 77 20 74 61 62 6c 65 2c 20 74  the new table, t
3b40: 68 65 6e 20 63 6f 70 79 20 74 68 65 20 64 61 74  hen copy the dat
3b50: 61 20 62 61 63 6b 20 69 6e 20 66 72 6f 6d 0a 20  a back in from. 
3b60: 20 74 68 65 20 74 65 6d 70 6f 72 61 72 79 20 74   the temporary t
3b70: 61 62 6c 65 2e 3c 2f 70 3e 0a 0a 20 20 3c 70 3e  able.</p>..  <p>
3b80: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 73 75 70  For example, sup
3b90: 70 6f 73 65 20 79 6f 75 20 68 61 76 65 20 61 20  pose you have a 
3ba0: 74 61 62 6c 65 20 6e 61 6d 65 64 20 22 74 31 22  table named "t1"
3bb0: 20 77 69 74 68 20 63 6f 6c 75 6d 6e 73 0a 20 20   with columns.  
3bc0: 6e 61 6d 65 73 20 22 61 22 2c 20 22 62 22 2c 20  names "a", "b", 
3bd0: 61 6e 64 20 22 63 22 20 61 6e 64 20 74 68 61 74  and "c" and that
3be0: 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 64 65 6c   you want to del
3bf0: 65 74 65 20 63 6f 6c 75 6d 6e 20 22 63 22 20 66  ete column "c" f
3c00: 72 6f 6d 0a 20 20 74 68 69 73 20 74 61 62 6c 65  rom.  this table
3c10: 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67  .  The following
3c20: 20 73 74 65 70 73 20 69 6c 6c 75 73 74 72 61 74   steps illustrat
3c30: 65 20 68 6f 77 20 74 68 69 73 20 63 6f 75 6c 64  e how this could
3c40: 20 62 65 20 64 6f 6e 65 3a 0a 20 20 3c 2f 70 3e   be done:.  </p>
3c50: 0a 0a 20 20 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  ..  <blockquote>
3c60: 3c 70 72 65 3e 0a 42 45 47 49 4e 20 54 52 41 4e  <pre>.BEGIN TRAN
3c70: 53 41 43 54 49 4f 4e 3b 0a 43 52 45 41 54 45 20  SACTION;.CREATE 
3c80: 54 45 4d 50 4f 52 41 52 59 20 54 41 42 4c 45 20  TEMPORARY TABLE 
3c90: 74 31 5f 62 61 63 6b 75 70 28 61 2c 62 29 3b 0a  t1_backup(a,b);.
3ca0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 5f 62  INSERT INTO t1_b
3cb0: 61 63 6b 75 70 20 53 45 4c 45 43 54 20 61 2c 62  ackup SELECT a,b
3cc0: 20 46 52 4f 4d 20 74 31 3b 0a 44 52 4f 50 20 54   FROM t1;.DROP T
3cd0: 41 42 4c 45 20 74 31 3b 0a 43 52 45 41 54 45 20  ABLE t1;.CREATE 
3ce0: 54 41 42 4c 45 20 74 31 28 61 2c 62 29 3b 0a 49  TABLE t1(a,b);.I
3cf0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 53 45  NSERT INTO t1 SE
3d00: 4c 45 43 54 20 61 2c 62 20 46 52 4f 4d 20 74 31  LECT a,b FROM t1
3d10: 5f 62 61 63 6b 75 70 3b 0a 44 52 4f 50 20 54 41  _backup;.DROP TA
3d20: 42 4c 45 20 74 31 5f 62 61 63 6b 75 70 3b 0a 43  BLE t1_backup;.C
3d30: 4f 4d 4d 49 54 3b 0a 3c 2f 70 72 65 3e 3c 2f 62  OMMIT;.</pre></b
3d40: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 66 61  lockquote>.}..fa
3d50: 71 20 7b 0a 20 20 49 20 64 65 6c 65 74 65 64 20  q {.  I deleted 
3d60: 61 20 6c 6f 74 20 6f 66 20 64 61 74 61 20 62 75  a lot of data bu
3d70: 74 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  t the database f
3d80: 69 6c 65 20 64 69 64 20 6e 6f 74 20 67 65 74 20  ile did not get 
3d90: 61 6e 79 0a 20 20 73 6d 61 6c 6c 65 72 2e 20 20  any.  smaller.  
3da0: 49 73 20 74 68 69 73 20 61 20 62 75 67 3f 0a 7d  Is this a bug?.}
3db0: 20 7b 0a 20 20 3c 70 3e 4e 6f 2e 20 20 57 68 65   {.  <p>No.  Whe
3dc0: 6e 20 79 6f 75 20 64 65 6c 65 74 65 20 69 6e 66  n you delete inf
3dd0: 6f 72 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 61 6e  ormation from an
3de0: 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73 65   SQLite database
3df0: 2c 20 74 68 65 0a 20 20 75 6e 75 73 65 64 20 64  , the.  unused d
3e00: 69 73 6b 20 73 70 61 63 65 20 69 73 20 61 64 64  isk space is add
3e10: 65 64 20 74 6f 20 61 6e 20 69 6e 74 65 72 6e 61  ed to an interna
3e20: 6c 20 22 66 72 65 65 2d 6c 69 73 74 22 20 61 6e  l "free-list" an
3e30: 64 20 69 73 20 72 65 75 73 65 64 0a 20 20 74 68  d is reused.  th
3e40: 65 20 6e 65 78 74 20 74 69 6d 65 20 79 6f 75 20  e next time you 
3e50: 69 6e 73 65 72 74 20 64 61 74 61 2e 20 20 54 68  insert data.  Th
3e60: 65 20 64 69 73 6b 20 73 70 61 63 65 20 69 73 20  e disk space is 
3e70: 6e 6f 74 20 6c 6f 73 74 2e 20 20 42 75 74 0a 20  not lost.  But. 
3e80: 20 6e 65 69 74 68 65 72 20 69 73 20 69 74 20 72   neither is it r
3e90: 65 74 75 72 6e 65 64 20 74 6f 20 74 68 65 20 6f  eturned to the o
3ea0: 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2e  perating system.
3eb0: 3c 2f 70 3e 0a 0a 20 20 3c 70 3e 49 66 20 79 6f  </p>..  <p>If yo
3ec0: 75 20 64 65 6c 65 74 65 20 61 20 6c 6f 74 20 6f  u delete a lot o
3ed0: 66 20 64 61 74 61 20 61 6e 64 20 77 61 6e 74 20  f data and want 
3ee0: 74 6f 20 73 68 72 69 6e 6b 20 74 68 65 20 64 61  to shrink the da
3ef0: 74 61 62 61 73 65 20 66 69 6c 65 2c 0a 20 20 72  tabase file,.  r
3f00: 75 6e 20 74 68 65 20 56 41 43 55 55 4d 20 63 6f  un the VACUUM co
3f10: 6d 6d 61 6e 64 20 28 76 65 72 73 69 6f 6e 20 32  mmand (version 2
3f20: 2e 38 2e 31 20 61 6e 64 20 6c 61 74 65 72 29 2e  .8.1 and later).
3f30: 20 20 56 41 43 55 55 4d 20 77 69 6c 6c 20 72 65    VACUUM will re
3f40: 63 6f 6e 73 74 72 75 63 74 0a 20 20 74 68 65 20  construct.  the 
3f50: 64 61 74 61 62 61 73 65 20 66 72 6f 6d 20 73 63  database from sc
3f60: 72 61 74 63 68 2e 20 20 54 68 69 73 20 77 69 6c  ratch.  This wil
3f70: 6c 20 6c 65 61 76 65 20 74 68 65 20 64 61 74 61  l leave the data
3f80: 62 61 73 65 20 77 69 74 68 20 61 6e 20 65 6d 70  base with an emp
3f90: 74 79 0a 20 20 66 72 65 65 2d 6c 69 73 74 20 61  ty.  free-list a
3fa0: 6e 64 20 61 20 66 69 6c 65 20 74 68 61 74 20 69  nd a file that i
3fb0: 73 20 6d 69 6e 69 6d 61 6c 20 69 6e 20 73 69 7a  s minimal in siz
3fc0: 65 2e 20 20 4e 6f 74 65 2c 20 68 6f 77 65 76 65  e.  Note, howeve
3fd0: 72 2c 20 74 68 61 74 20 74 68 65 0a 20 20 56 41  r, that the.  VA
3fe0: 43 55 55 4d 20 63 61 6e 20 74 61 6b 65 20 73 6f  CUUM can take so
3ff0: 6d 65 20 74 69 6d 65 20 74 6f 20 72 75 6e 20 28  me time to run (
4000: 61 72 6f 75 6e 64 20 61 20 68 61 6c 66 20 73 65  around a half se
4010: 63 6f 6e 64 20 70 65 72 20 6d 65 67 61 62 79 74  cond per megabyt
4020: 65 0a 20 20 6f 6e 20 74 68 65 20 4c 69 6e 75 78  e.  on the Linux
4030: 20 62 6f 78 20 77 68 65 72 65 20 53 51 4c 69 74   box where SQLit
4040: 65 20 69 73 20 64 65 76 65 6c 6f 70 65 64 29 20  e is developed) 
4050: 61 6e 64 20 69 74 20 63 61 6e 20 75 73 65 20 75  and it can use u
4060: 70 20 74 6f 20 74 77 69 63 65 0a 20 20 61 73 20  p to twice.  as 
4070: 6d 75 63 68 20 74 65 6d 70 6f 72 61 72 79 20 64  much temporary d
4080: 69 73 6b 20 73 70 61 63 65 20 61 73 20 74 68 65  isk space as the
4090: 20 6f 72 69 67 69 6e 61 6c 20 66 69 6c 65 20 77   original file w
40a0: 68 69 6c 65 20 69 74 20 69 73 20 72 75 6e 6e 69  hile it is runni
40b0: 6e 67 2e 0a 20 20 3c 2f 70 3e 0a 7d 0a 0a 66 61  ng..  </p>.}..fa
40c0: 71 20 7b 0a 20 20 43 61 6e 20 49 20 75 73 65 20  q {.  Can I use 
40d0: 53 51 4c 69 74 65 20 69 6e 20 6d 79 20 63 6f 6d  SQLite in my com
40e0: 6d 65 72 69 63 61 6c 20 70 72 6f 64 75 63 74 20  merical product 
40f0: 77 69 74 68 6f 75 74 20 70 61 79 69 6e 67 20 72  without paying r
4100: 6f 79 61 6c 74 69 65 73 3f 0a 7d 20 7b 0a 20 20  oyalties?.} {.  
4110: 3c 70 3e 59 65 73 2e 20 20 53 51 4c 69 74 65 20  <p>Yes.  SQLite 
4120: 69 73 20 69 6e 20 74 68 65 20 70 75 62 6c 69 63  is in the public
4130: 20 64 6f 6d 61 69 6e 2e 20 20 4e 6f 20 63 6c 61   domain.  No cla
4140: 69 6d 20 6f 66 20 6f 77 6e 65 72 73 68 69 70 20  im of ownership 
4150: 69 73 20 6d 61 64 65 0a 20 20 74 6f 20 61 6e 79  is made.  to any
4160: 20 70 61 72 74 20 6f 66 20 74 68 65 20 63 6f 64   part of the cod
4170: 65 2e 20 20 59 6f 75 20 63 61 6e 20 64 6f 20 61  e.  You can do a
4180: 6e 79 74 68 69 6e 67 20 79 6f 75 20 77 61 6e 74  nything you want
4190: 20 77 69 74 68 20 69 74 2e 3c 2f 70 3e 0a 7d 0a   with it.</p>.}.
41a0: 0a 66 61 71 20 7b 0a 20 20 48 6f 77 20 64 6f 20  .faq {.  How do 
41b0: 49 20 75 73 65 20 61 20 73 74 72 69 6e 67 20 6c  I use a string l
41c0: 69 74 65 72 61 6c 20 74 68 61 74 20 63 6f 6e 74  iteral that cont
41d0: 61 69 6e 73 20 61 6e 20 65 6d 62 65 64 64 65 64  ains an embedded
41e0: 20 73 69 6e 67 6c 65 2d 71 75 6f 74 65 20 28 27   single-quote ('
41f0: 29 0a 20 20 63 68 61 72 61 63 74 65 72 3f 0a 7d  ).  character?.}
4200: 20 7b 0a 20 20 3c 70 3e 54 68 65 20 53 51 4c 20   {.  <p>The SQL 
4210: 73 74 61 6e 64 61 72 64 20 73 70 65 63 69 66 69  standard specifi
4220: 65 73 20 74 68 61 74 20 73 69 6e 67 6c 65 2d 71  es that single-q
4230: 75 6f 74 65 73 20 69 6e 20 73 74 72 69 6e 67 73  uotes in strings
4240: 20 61 72 65 20 65 73 63 61 70 65 64 0a 20 20 62   are escaped.  b
4250: 79 20 70 75 74 74 69 6e 67 20 74 77 6f 20 73 69  y putting two si
4260: 6e 67 6c 65 20 71 75 6f 74 65 73 20 69 6e 20 61  ngle quotes in a
4270: 20 72 6f 77 2e 20 20 53 51 4c 20 77 6f 72 6b 73   row.  SQL works
4280: 20 6c 69 6b 65 20 74 68 65 20 50 61 73 63 61 6c   like the Pascal
4290: 20 70 72 6f 67 72 61 6d 6d 69 6e 67 0a 20 20 6c   programming.  l
42a0: 61 6e 67 75 61 67 65 20 69 6e 20 74 68 65 20 72  anguage in the r
42b0: 65 67 61 72 64 2e 20 20 53 51 4c 69 74 65 20 66  egard.  SQLite f
42c0: 6f 6c 6c 6f 77 73 20 74 68 69 73 20 73 74 61 6e  ollows this stan
42d0: 64 61 72 64 2e 20 20 45 78 61 6d 70 6c 65 3a 0a  dard.  Example:.
42e0: 20 20 3c 2f 70 3e 0a 0a 20 20 3c 62 6c 6f 63 6b    </p>..  <block
42f0: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 20 20 20 20  quote><pre>.    
4300: 49 4e 53 45 52 54 20 49 4e 54 4f 20 78 79 7a 20  INSERT INTO xyz 
4310: 56 41 4c 55 45 53 28 27 35 20 4f 27 27 63 6c 6f  VALUES('5 O''clo
4320: 63 6b 27 29 3b 0a 20 20 3c 2f 70 72 65 3e 3c 2f  ck');.  </pre></
4330: 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 7d 0a 0a 23  blockquote>.}..#
4340: 20 45 6e 64 20 6f 66 20 71 75 65 73 74 69 6f 6e   End of question
4350: 73 20 61 6e 64 20 61 6e 73 77 65 72 73 2e 0a 23  s and answers..#
4360: 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 70 75  ############..pu
4370: 74 73 20 7b 3c 68 32 3e 46 72 65 71 75 65 6e 74  ts {<h2>Frequent
4380: 6c 79 20 41 73 6b 65 64 20 51 75 65 73 74 69 6f  ly Asked Questio
4390: 6e 73 3c 2f 68 32 3e 7d 0a 0a 23 20 70 75 74 73  ns</h2>}..# puts
43a0: 20 7b 3c 44 4c 20 43 4f 4d 50 41 43 54 3e 7d 0a   {<DL COMPACT>}.
43b0: 23 20 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20  # for {set i 1} 
43c0: 7b 24 69 3c 24 63 6e 74 7d 20 7b 69 6e 63 72 20  {$i<$cnt} {incr 
43d0: 69 7d 20 7b 0a 23 20 20 20 70 75 74 73 20 22 20  i} {.#   puts " 
43e0: 20 3c 44 54 3e 3c 41 20 48 52 45 46 3d 5c 22 23   <DT><A HREF=\"#
43f0: 71 24 69 5c 22 3e 28 24 69 29 3c 2f 41 3e 3c 2f  q$i\">($i)</A></
4400: 44 54 3e 22 0a 23 20 20 20 70 75 74 73 20 22 20  DT>".#   puts " 
4410: 20 3c 44 44 3e 5b 6c 69 6e 64 65 78 20 24 66 61   <DD>[lindex $fa
4420: 71 28 24 69 29 20 30 5d 3c 2f 44 44 3e 22 0a 23  q($i) 0]</DD>".#
4430: 20 7d 0a 23 20 70 75 74 73 20 7b 3c 2f 44 4c 3e   }.# puts {</DL>
4440: 7d 0a 70 75 74 73 20 7b 3c 4f 4c 3e 7d 0a 66 6f  }.puts {<OL>}.fo
4450: 72 20 7b 73 65 74 20 69 20 31 7d 20 7b 24 69 3c  r {set i 1} {$i<
4460: 24 63 6e 74 7d 20 7b 69 6e 63 72 20 69 7d 20 7b  $cnt} {incr i} {
4470: 0a 20 20 70 75 74 73 20 22 3c 6c 69 3e 3c 61 20  .  puts "<li><a 
4480: 68 72 65 66 3d 5c 22 23 71 24 69 5c 22 3e 5b 6c  href=\"#q$i\">[l
4490: 69 6e 64 65 78 20 24 66 61 71 28 24 69 29 20 30  index $faq($i) 0
44a0: 5d 3c 2f 61 3e 3c 2f 6c 69 3e 22 0a 7d 0a 70 75  ]</a></li>".}.pu
44b0: 74 73 20 7b 3c 2f 4f 4c 3e 7d 0a 0a 66 6f 72 20  ts {</OL>}..for 
44c0: 7b 73 65 74 20 69 20 31 7d 20 7b 24 69 3c 24 63  {set i 1} {$i<$c
44d0: 6e 74 7d 20 7b 69 6e 63 72 20 69 7d 20 7b 0a 20  nt} {incr i} {. 
44e0: 20 70 75 74 73 20 22 3c 41 20 4e 41 4d 45 3d 5c   puts "<A NAME=\
44f0: 22 71 24 69 5c 22 3e 3c 48 52 20 2f 3e 22 0a 20  "q$i\"><HR />". 
4500: 20 70 75 74 73 20 22 3c 50 3e 3c 42 3e 28 24 69   puts "<P><B>($i
4510: 29 20 5b 6c 69 6e 64 65 78 20 24 66 61 71 28 24  ) [lindex $faq($
4520: 69 29 20 30 5d 3c 2f 42 3e 3c 2f 50 3e 5c 6e 22  i) 0]</B></P>\n"
4530: 0a 20 20 70 75 74 73 20 22 3c 42 4c 4f 43 4b 51  .  puts "<BLOCKQ
4540: 55 4f 54 45 3e 5b 6c 69 6e 64 65 78 20 24 66 61  UOTE>[lindex $fa
4550: 71 28 24 69 29 20 31 5d 3c 2f 42 4c 4f 43 4b 51  q($i) 1]</BLOCKQ
4560: 55 4f 54 45 3e 3c 2f 4c 49 3e 5c 6e 22 0a 7d 0a  UOTE></LI>\n".}.
4570: 0a 70 75 74 73 20 7b 3c 2f 4f 4c 3e 7d 0a 66 6f  .puts {</OL>}.fo
4580: 6f 74 65 72 20 24 72 63 73 69 64 0a              oter $rcsid.