Documentation Source Text

Hex Artifact Content
Login

Artifact d4675c11f0c83f6517356072dcd7eef1fe72defa:


0000: 3c 74 69 74 6c 65 3e 49 6e 2d 4d 65 6d 6f 72 79  <title>In-Memory
0010: 20 44 61 74 61 62 61 73 65 73 3c 2f 74 69 74 6c   Databases</titl
0020: 65 3e 0a 3c 74 63 6c 3e 68 64 5f 6b 65 79 77 6f  e>.<tcl>hd_keywo
0030: 72 64 73 20 7b 69 6e 2d 6d 65 6d 6f 72 79 20 64  rds {in-memory d
0040: 61 74 61 62 61 73 65 7d 20 7b 69 6e 2d 6d 65 6d  atabase} {in-mem
0050: 6f 72 79 20 64 61 74 61 62 61 73 65 73 7d 20 7b  ory databases} {
0060: 6d 65 6d 6f 72 79 7d 3c 2f 74 63 6c 3e 0a 0a 3c  memory}</tcl>..<
0070: 68 31 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72  h1 align="center
0080: 22 3e 49 6e 2d 4d 65 6d 6f 72 79 20 44 61 74 61  ">In-Memory Data
0090: 62 61 73 65 73 3c 2f 68 31 3e 0a 0a 3c 70 3e 41  bases</h1>..<p>A
00a0: 6e 20 53 51 4c 69 74 65 20 64 61 74 61 62 61 73  n SQLite databas
00b0: 65 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 73 74  e is normally st
00c0: 6f 72 65 64 20 69 6e 20 61 20 73 69 6e 67 6c 65  ored in a single
00d0: 20 6f 72 64 69 6e 61 72 79 20 64 69 73 6b 0a 66   ordinary disk.f
00e0: 69 6c 65 2e 20 48 6f 77 65 76 65 72 2c 20 69 6e  ile. However, in
00f0: 20 63 65 72 74 61 69 6e 20 63 69 72 63 75 6d 73   certain circums
0100: 74 61 6e 63 65 73 2c 20 74 68 65 20 64 61 74 61  tances, the data
0110: 62 61 73 65 20 6d 69 67 68 74 20 62 65 20 73 74  base might be st
0120: 6f 72 65 64 20 69 6e 0a 6d 65 6d 6f 72 79 2e 3c  ored in.memory.<
0130: 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20 6d 6f 73 74  /p>..<p>The most
0140: 20 63 6f 6d 6d 6f 6e 20 77 61 79 20 74 6f 20 66   common way to f
0150: 6f 72 63 65 20 61 6e 20 53 51 4c 69 74 65 20 64  orce an SQLite d
0160: 61 74 61 62 61 73 65 20 74 6f 20 65 78 69 73 74  atabase to exist
0170: 20 70 75 72 65 6c 79 20 0a 69 6e 20 6d 65 6d 6f   purely .in memo
0180: 72 79 20 69 73 20 74 6f 20 6f 70 65 6e 20 74 68  ry is to open th
0190: 65 20 64 61 74 61 62 61 73 65 20 75 73 69 6e 67  e database using
01a0: 20 74 68 65 20 73 70 65 63 69 61 6c 20 66 69 6c   the special fil
01b0: 65 6e 61 6d 65 0a 22 3c 62 3e 3a 6d 65 6d 6f 72  ename."<b>:memor
01c0: 79 3a 3c 2f 62 3e 22 2e 20 20 49 6e 20 6f 74 68  y:</b>".  In oth
01d0: 65 72 20 77 6f 72 64 73 2c 20 69 6e 73 74 65 61  er words, instea
01e0: 64 20 6f 66 20 70 61 73 73 69 6e 67 20 74 68 65  d of passing the
01f0: 20 6e 61 6d 65 20 6f 66 0a 61 20 72 65 61 6c 20   name of.a real 
0200: 64 69 73 6b 20 66 69 6c 65 20 69 6e 74 6f 20 6f  disk file into o
0210: 6e 65 20 6f 66 20 74 68 65 20 5b 73 71 6c 69 74  ne of the [sqlit
0220: 65 33 5f 6f 70 65 6e 28 29 5d 2c 20 5b 73 71 6c  e3_open()], [sql
0230: 69 74 65 33 5f 6f 70 65 6e 31 36 28 29 5d 2c 20  ite3_open16()], 
0240: 6f 72 0a 5b 73 71 6c 69 74 65 33 5f 6f 70 65 6e  or.[sqlite3_open
0250: 5f 76 32 28 29 5d 20 66 75 6e 63 74 69 6f 6e 73  _v2()] functions
0260: 2c 20 70 61 73 73 20 69 6e 20 74 68 65 20 73 74  , pass in the st
0270: 72 69 6e 67 20 22 3a 6d 65 6d 6f 72 79 3a 22 2e  ring ":memory:".
0280: 20 20 46 6f 72 0a 65 78 61 6d 70 6c 65 3a 3c 2f    For.example:</
0290: 70 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e  p>..<blockquote>
02a0: 3c 70 72 65 3e 0a 72 63 20 3d 20 73 71 6c 69 74  <pre>.rc = sqlit
02b0: 65 33 5f 6f 70 65 6e 28 22 3a 6d 65 6d 6f 72 79  e3_open(":memory
02c0: 3a 22 2c 20 26 61 6d 70 3b 64 62 29 3b 0a 3c 2f  :", &amp;db);.</
02d0: 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  pre></blockquote
02e0: 3e 0a 0a 3c 70 3e 57 68 65 6e 20 74 68 69 73 20  >..<p>When this 
02f0: 69 73 20 64 6f 6e 65 2c 20 6e 6f 20 64 69 73 6b  is done, no disk
0300: 20 66 69 6c 65 20 69 73 20 6f 70 65 6e 65 64 2e   file is opened.
0310: 20 20 0a 49 6e 73 74 65 61 64 2c 20 61 20 6e 65    .Instead, a ne
0320: 77 20 64 61 74 61 62 61 73 65 20 69 73 20 63 72  w database is cr
0330: 65 61 74 65 64 0a 70 75 72 65 6c 79 20 69 6e 20  eated.purely in 
0340: 6d 65 6d 6f 72 79 2e 20 20 54 68 65 20 64 61 74  memory.  The dat
0350: 61 62 61 73 65 20 63 65 61 73 65 73 20 74 6f 20  abase ceases to 
0360: 65 78 69 73 74 20 61 73 20 73 6f 6f 6e 20 61 73  exist as soon as
0370: 20 74 68 65 20 64 61 74 61 62 61 73 65 0a 63 6f   the database.co
0380: 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 6c 6f 73  nnection is clos
0390: 65 64 2e 20 20 45 76 65 72 79 20 3a 6d 65 6d 6f  ed.  Every :memo
03a0: 72 79 3a 20 64 61 74 61 62 61 73 65 20 69 73 20  ry: database is 
03b0: 64 69 73 74 69 6e 63 74 20 66 72 6f 6d 20 65 76  distinct from ev
03c0: 65 72 79 0a 6f 74 68 65 72 2e 20 20 53 6f 2c 20  ery.other.  So, 
03d0: 6f 70 65 6e 69 6e 67 20 74 77 6f 20 64 61 74 61  opening two data
03e0: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73  base connections
03f0: 20 65 61 63 68 20 77 69 74 68 20 74 68 65 20 66   each with the f
0400: 69 6c 65 6e 61 6d 65 0a 22 3a 6d 65 6d 6f 72 79  ilename.":memory
0410: 3a 22 20 77 69 6c 6c 20 63 72 65 61 74 65 20 74  :" will create t
0420: 77 6f 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 69  wo independent i
0430: 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
0440: 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 54 68 65 20  es.</p>..<p>The 
0450: 73 70 65 63 69 61 6c 20 66 69 6c 65 6e 61 6d 65  special filename
0460: 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 63 61 6e 20   ":memory:" can 
0470: 62 65 20 75 73 65 64 20 61 6e 79 77 68 65 72 65  be used anywhere
0480: 20 74 68 61 74 20 61 20 64 61 74 61 62 61 73 65   that a database
0490: 0a 66 69 6c 65 6e 61 6d 65 20 69 73 20 70 65 72  .filename is per
04a0: 6d 69 74 74 65 64 2e 20 20 46 6f 72 20 65 78 61  mitted.  For exa
04b0: 6d 70 6c 65 2c 20 69 74 20 63 61 6e 20 62 65 20  mple, it can be 
04c0: 75 73 65 64 20 61 73 20 74 68 65 0a 3c 69 3e 66  used as the.<i>f
04d0: 69 6c 65 6e 61 6d 65 3c 2f 69 3e 20 69 6e 20 61  ilename</i> in a
04e0: 6e 20 5b 41 54 54 41 43 48 5d 20 63 6f 6d 6d 61  n [ATTACH] comma
04f0: 6e 64 3a 3c 2f 70 3e 0a 0a 3c 62 6c 6f 63 6b 71  nd:</p>..<blockq
0500: 75 6f 74 65 3e 3c 70 72 65 3e 0a 41 54 54 41 43  uote><pre>.ATTAC
0510: 48 20 44 41 54 41 42 41 53 45 20 27 3a 6d 65 6d  H DATABASE ':mem
0520: 6f 72 79 3a 27 20 41 53 20 61 75 78 31 3b 0a 3c  ory:' AS aux1;.<
0530: 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74  /pre></blockquot
0540: 65 3e 0a 0a 3c 70 3e 4e 6f 74 65 20 74 68 61 74  e>..<p>Note that
0550: 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 20 74 68   in order for th
0560: 65 20 73 70 65 63 69 61 6c 20 22 3a 6d 65 6d 6f  e special ":memo
0570: 72 79 3a 22 20 6e 61 6d 65 20 74 6f 20 61 70 70  ry:" name to app
0580: 6c 79 20 61 6e 64 20 74 6f 0a 63 72 65 61 74 65  ly and to.create
0590: 20 61 20 70 75 72 65 20 69 6e 2d 6d 65 6d 6f 72   a pure in-memor
05a0: 79 20 64 61 74 61 62 61 73 65 2c 20 74 68 65 72  y database, ther
05b0: 65 20 6d 75 73 74 20 62 65 20 6e 6f 20 61 64 64  e must be no add
05c0: 69 74 69 6f 6e 61 6c 20 74 65 78 74 20 69 6e 20  itional text in 
05d0: 74 68 65 0a 66 69 6c 65 6e 61 6d 65 2e 20 20 54  the.filename.  T
05e0: 68 75 73 2c 20 61 20 64 69 73 6b 2d 62 61 73 65  hus, a disk-base
05f0: 64 20 64 61 74 61 62 61 73 65 20 63 61 6e 20 62  d database can b
0600: 65 20 63 72 65 61 74 65 64 20 69 6e 20 61 20 66  e created in a f
0610: 69 6c 65 20 62 79 20 70 72 65 70 65 6e 64 69 6e  ile by prependin
0620: 67 0a 61 20 70 61 74 68 6e 61 6d 65 2c 20 6c 69  g.a pathname, li
0630: 6b 65 20 74 68 69 73 3a 20 20 22 2e 2f 3a 6d 65  ke this:  "./:me
0640: 6d 6f 72 79 3a 22 2e 3c 2f 70 3e 0a 0a 3c 70 3e  mory:".</p>..<p>
0650: 54 68 65 20 73 70 65 63 69 61 6c 20 22 3a 6d 65  The special ":me
0660: 6d 6f 72 79 3a 22 20 66 69 6c 65 6e 61 6d 65 20  mory:" filename 
0670: 61 6c 73 6f 20 77 6f 72 6b 73 20 77 68 65 6e 20  also works when 
0680: 75 73 69 6e 67 20 5b 55 52 49 20 66 69 6c 65 6e  using [URI filen
0690: 61 6d 65 73 5d 2e 0a 46 6f 72 20 65 78 61 6d 70  ames]..For examp
06a0: 6c 65 3a 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  le:..<blockquote
06b0: 3e 3c 70 72 65 3e 0a 72 63 20 3d 20 73 71 6c 69  ><pre>.rc = sqli
06c0: 74 65 33 5f 6f 70 65 6e 28 22 66 69 6c 65 3a 3a  te3_open("file::
06d0: 6d 65 6d 6f 72 79 3a 22 2c 20 26 61 6d 70 3b 64  memory:", &amp;d
06e0: 62 29 3b 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63  b);.</pre></bloc
06f0: 6b 71 75 6f 74 65 3e 0a 0a 4f 72 2c 0a 0a 3c 62  kquote>..Or,..<b
0700: 6c 6f 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a  lockquote><pre>.
0710: 41 54 54 41 43 48 20 44 41 54 41 42 41 53 45 20  ATTACH DATABASE 
0720: 27 66 69 6c 65 3a 3a 6d 65 6d 6f 72 79 3a 27 20  'file::memory:' 
0730: 41 53 20 61 75 78 31 3b 0a 3c 2f 70 72 65 3e 3c  AS aux1;.</pre><
0740: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 3c 74  /blockquote>..<t
0750: 63 6c 3e 68 64 5f 66 72 61 67 6d 65 6e 74 20 73  cl>hd_fragment s
0760: 68 61 72 65 64 6d 65 6d 64 62 20 7b 69 6e 2d 6d  haredmemdb {in-m
0770: 65 6d 6f 72 79 20 73 68 61 72 65 64 20 63 61 63  emory shared cac
0780: 68 65 20 64 61 74 61 62 61 73 65 7d 3c 2f 74 63  he database}</tc
0790: 6c 3e 0a 3c 68 32 3e 49 6e 2d 6d 65 6d 6f 72 79  l>.<h2>In-memory
07a0: 20 44 61 74 61 62 61 73 65 73 20 41 6e 64 20 53   Databases And S
07b0: 68 61 72 65 64 20 43 61 63 68 65 3c 2f 68 32 3e  hared Cache</h2>
07c0: 0a 0a 3c 70 3e 49 6e 2d 6d 65 6d 6f 72 79 20 64  ..<p>In-memory d
07d0: 61 74 61 62 61 73 65 73 20 61 72 65 20 61 6c 6c  atabases are all
07e0: 6f 77 65 64 20 74 6f 20 75 73 65 20 5b 73 68 61  owed to use [sha
07f0: 72 65 64 20 63 61 63 68 65 5d 20 69 66 20 74 68  red cache] if th
0800: 65 79 20 61 72 65 0a 6f 70 65 6e 65 64 20 75 73  ey are.opened us
0810: 69 6e 67 20 61 20 5b 55 52 49 20 66 69 6c 65 6e  ing a [URI filen
0820: 61 6d 65 5d 2e 20 20 49 66 20 74 68 65 20 75 6e  ame].  If the un
0830: 61 64 6f 72 6e 65 64 20 22 3a 6d 65 6d 6f 72 79  adorned ":memory
0840: 3a 22 20 6e 61 6d 65 20 69 73 20 75 73 65 64 0a  :" name is used.
0850: 74 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 69  to specify the i
0860: 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61 73  n-memory databas
0870: 65 2c 20 74 68 65 6e 20 74 68 61 74 20 64 61 74  e, then that dat
0880: 61 62 61 73 65 20 61 6c 77 61 79 73 20 68 61 73  abase always has
0890: 20 61 20 70 72 69 76 61 74 65 0a 63 61 63 68 65   a private.cache
08a0: 20 61 6e 64 20 69 73 20 74 68 69 73 20 6f 6e 6c   and is this onl
08b0: 79 20 76 69 73 69 62 6c 65 20 74 6f 20 74 68 65  y visible to the
08c0: 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63   database connec
08d0: 74 69 6f 6e 20 74 68 61 74 20 6f 72 69 67 69 6e  tion that origin
08e0: 61 6c 6c 79 0a 6f 70 65 6e 65 64 20 69 74 2e 20  ally.opened it. 
08f0: 20 48 6f 77 65 76 65 72 2c 20 74 68 65 20 73 61   However, the sa
0900: 6d 65 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74  me in-memory dat
0910: 61 62 61 73 65 20 63 61 6e 20 62 65 20 6f 70 65  abase can be ope
0920: 6e 65 64 20 62 79 20 74 77 6f 20 6f 72 0a 6d 6f  ned by two or.mo
0930: 72 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e  re database conn
0940: 65 63 74 69 6f 6e 73 20 61 73 20 66 6f 6c 6c 6f  ections as follo
0950: 77 73 3a 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65  ws:..<blockquote
0960: 3e 3c 70 72 65 3e 0a 72 63 20 3d 20 73 71 6c 69  ><pre>.rc = sqli
0970: 74 65 33 5f 6f 70 65 6e 28 22 66 69 6c 65 3a 3a  te3_open("file::
0980: 6d 65 6d 6f 72 79 3a 3f 63 61 63 68 65 3d 73 68  memory:?cache=sh
0990: 61 72 65 64 22 2c 20 26 61 6d 70 3b 64 62 29 3b  ared", &amp;db);
09a0: 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  .</pre></blockqu
09b0: 6f 74 65 3e 0a 0a 4f 72 2c 0a 0a 3c 62 6c 6f 63  ote>..Or,..<bloc
09c0: 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 41 54 54  kquote><pre>.ATT
09d0: 41 43 48 20 44 41 54 41 42 41 53 45 20 27 66 69  ACH DATABASE 'fi
09e0: 6c 65 3a 3a 6d 65 6d 6f 72 79 3a 3f 63 61 63 68  le::memory:?cach
09f0: 65 3d 73 68 61 72 65 64 27 20 41 53 20 61 75 78  e=shared' AS aux
0a00: 31 3b 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b  1;.</pre></block
0a10: 71 75 6f 74 65 3e 0a 0a 3c 70 3e 54 68 69 73 20  quote>..<p>This 
0a20: 61 6c 6c 6f 77 73 20 73 65 70 61 72 61 74 65 20  allows separate 
0a30: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
0a40: 69 6f 6e 73 20 74 6f 20 73 68 61 72 65 20 74 68  ions to share th
0a50: 65 20 73 61 6d 65 0a 69 6e 2d 6d 65 6d 6f 72 79  e same.in-memory
0a60: 20 64 61 74 61 62 61 73 65 2e 20 20 4f 66 20 63   database.  Of c
0a70: 6f 75 72 73 65 2c 20 61 6c 6c 20 64 61 74 61 62  ourse, all datab
0a80: 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 20  ase connections 
0a90: 73 68 61 72 69 6e 67 20 74 68 65 0a 69 6e 2d 6d  sharing the.in-m
0aa0: 65 6d 6f 72 79 20 64 61 74 61 62 61 73 65 20 6e  emory database n
0ab0: 65 65 64 20 74 6f 20 62 65 20 69 6e 20 74 68 65  eed to be in the
0ac0: 20 73 61 6d 65 20 70 72 6f 63 65 73 73 2e 20 20   same process.  
0ad0: 54 68 65 20 64 61 74 61 62 61 73 65 20 69 73 0a  The database is.
0ae0: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65  automatically de
0af0: 6c 65 74 65 64 20 61 6e 64 20 6d 65 6d 6f 72 79  leted and memory
0b00: 20 69 73 20 72 65 63 6c 61 69 6d 65 64 20 77 68   is reclaimed wh
0b10: 65 6e 20 74 68 65 20 6c 61 73 74 20 63 6f 6e 6e  en the last conn
0b20: 65 63 74 69 6f 6e 0a 74 6f 20 74 68 65 20 64 61  ection.to the da
0b30: 74 61 62 61 73 65 20 63 6c 6f 73 65 73 2e 0a 0a  tabase closes...
0b40: 3c 70 3e 49 66 20 74 77 6f 20 6f 72 20 6d 6f 72  <p>If two or mor
0b50: 65 20 64 69 73 74 69 6e 63 74 20 62 75 74 20 73  e distinct but s
0b60: 68 61 72 65 61 62 6c 65 20 69 6e 2d 6d 65 6d 6f  hareable in-memo
0b70: 72 79 20 64 61 74 61 62 61 73 65 73 20 61 72 65  ry databases are
0b80: 20 6e 65 65 64 65 64 0a 69 6e 20 61 20 73 69 6e   needed.in a sin
0b90: 67 6c 65 20 70 72 6f 63 65 73 73 2c 20 74 68 65  gle process, the
0ba0: 6e 20 74 68 65 20 5b 63 6f 72 65 71 70 20 7c 20  n the [coreqp | 
0bb0: 6d 6f 64 65 3d 6d 65 6d 6f 72 79 5d 20 71 75 65  mode=memory] que
0bc0: 72 79 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e  ry parameter can
0bd0: 0a 62 65 20 75 73 65 64 20 77 69 74 68 20 61 20  .be used with a 
0be0: 5b 55 52 49 20 66 69 6c 65 6e 61 6d 65 5d 20 74  [URI filename] t
0bf0: 6f 20 63 72 65 61 74 65 20 61 20 6e 61 6d 65 64  o create a named
0c00: 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62   in-memory datab
0c10: 61 73 65 3a 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74  ase:..<blockquot
0c20: 65 3e 3c 70 72 65 3e 0a 72 63 20 3d 20 73 71 6c  e><pre>.rc = sql
0c30: 69 74 65 33 5f 6f 70 65 6e 28 22 66 69 6c 65 3a  ite3_open("file:
0c40: 6d 65 6d 64 62 31 3f 6d 6f 64 65 3d 6d 65 6d 6f  memdb1?mode=memo
0c50: 72 79 26 61 6d 70 3b 63 61 63 68 65 3d 73 68 61  ry&amp;cache=sha
0c60: 72 65 64 22 2c 20 26 61 6d 70 3b 64 62 29 3b 0a  red", &amp;db);.
0c70: 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  </pre></blockquo
0c80: 74 65 3e 0a 0a 4f 72 2c 0a 0a 3c 62 6c 6f 63 6b  te>..Or,..<block
0c90: 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 41 54 54 41  quote><pre>.ATTA
0ca0: 43 48 20 44 41 54 41 42 41 53 45 20 27 66 69 6c  CH DATABASE 'fil
0cb0: 65 3a 6d 65 6d 64 62 31 3f 6d 6f 64 65 3d 6d 65  e:memdb1?mode=me
0cc0: 6d 6f 72 79 26 61 6d 70 3b 63 61 63 68 65 3d 73  mory&amp;cache=s
0cd0: 68 61 72 65 64 27 20 41 53 20 61 75 78 31 3b 0a  hared' AS aux1;.
0ce0: 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f  </pre></blockquo
0cf0: 74 65 3e 0a 0a 3c 70 3e 57 68 65 6e 20 61 6e 20  te>..<p>When an 
0d00: 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61 62 61  in-memory databa
0d10: 73 65 20 69 73 20 6e 61 6d 65 64 20 69 6e 20 74  se is named in t
0d20: 68 69 73 20 77 61 79 2c 20 69 74 20 77 69 6c 6c  his way, it will
0d30: 20 6f 6e 6c 79 20 73 68 61 72 65 20 69 74 73 0a   only share its.
0d40: 63 61 63 68 65 20 77 69 74 68 20 61 6e 6f 74 68  cache with anoth
0d50: 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68  er connection th
0d60: 61 74 20 75 73 65 73 20 65 78 61 63 74 6c 79 20  at uses exactly 
0d70: 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 2e 0a 0a  the same name...
0d80: 0a 0a 3c 74 63 6c 3e 68 64 5f 66 72 61 67 6d 65  ..<tcl>hd_fragme
0d90: 6e 74 20 74 65 6d 70 5f 64 62 20 7b 74 65 6d 70  nt temp_db {temp
0da0: 6f 72 61 72 79 20 74 61 62 6c 65 73 7d 20 7b 74  orary tables} {t
0db0: 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61 73  emporary databas
0dc0: 65 73 7d 3c 2f 74 63 6c 3e 0a 3c 68 32 3e 54 65  es}</tcl>.<h2>Te
0dd0: 6d 70 6f 72 61 72 79 20 44 61 74 61 62 61 73 65  mporary Database
0de0: 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 57 68 65 6e 20  s</h2>..<p>When 
0df0: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
0e00: 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 68 61  database file ha
0e10: 6e 64 65 64 20 74 6f 20 5b 73 71 6c 69 74 65 33  nded to [sqlite3
0e20: 5f 6f 70 65 6e 28 29 5d 20 6f 72 20 74 6f 0a 5b  _open()] or to.[
0e30: 41 54 54 41 43 48 5d 20 69 73 20 61 6e 20 65 6d  ATTACH] is an em
0e40: 70 74 79 20 73 74 72 69 6e 67 2c 20 74 68 65 6e  pty string, then
0e50: 20 61 20 6e 65 77 20 74 65 6d 70 6f 72 61 72 79   a new temporary
0e60: 20 66 69 6c 65 20 69 73 20 63 72 65 61 74 65 64   file is created
0e70: 20 74 6f 20 68 6f 6c 64 0a 74 68 65 20 64 61 74   to hold.the dat
0e80: 61 62 61 73 65 2e 3c 2f 70 3e 0a 0a 3c 62 6c 6f  abase.</p>..<blo
0e90: 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 72 63  ckquote><pre>.rc
0ea0: 20 3d 20 73 71 6c 69 74 65 33 5f 6f 70 65 6e 28   = sqlite3_open(
0eb0: 22 22 2c 20 26 61 6d 70 3b 64 62 29 3b 0a 3c 2f  "", &amp;db);.</
0ec0: 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75 6f 74 65  pre></blockquote
0ed0: 3e 0a 0a 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 3c  >..<blockquote><
0ee0: 70 72 65 3e 0a 41 54 54 41 43 48 20 44 41 54 41  pre>.ATTACH DATA
0ef0: 42 41 53 45 20 27 27 20 41 53 20 61 75 78 32 3b  BASE '' AS aux2;
0f00: 0a 3c 2f 70 72 65 3e 3c 2f 62 6c 6f 63 6b 71 75  .</pre></blockqu
0f10: 6f 74 65 3e 0a 0a 3c 70 3e 41 20 64 69 66 66 65  ote>..<p>A diffe
0f20: 72 65 6e 74 20 74 65 6d 70 6f 72 61 72 79 20 66  rent temporary f
0f30: 69 6c 65 20 69 73 20 63 72 65 61 74 65 64 20 65  ile is created e
0f40: 61 63 68 20 74 69 6d 65 2c 20 73 6f 20 74 68 61  ach time, so tha
0f50: 74 20 6a 75 73 74 20 6c 69 6b 65 20 61 73 0a 77  t just like as.w
0f60: 69 74 68 20 74 68 65 20 73 70 65 63 69 61 6c 20  ith the special 
0f70: 22 3a 6d 65 6d 6f 72 79 3a 22 20 73 74 72 69 6e  ":memory:" strin
0f80: 67 2c 20 74 77 6f 20 64 61 74 61 62 61 73 65 20  g, two database 
0f90: 63 6f 6e 6e 65 63 74 69 6f 6e 73 20 74 6f 20 74  connections to t
0fa0: 65 6d 70 6f 72 61 72 79 0a 64 61 74 61 62 61 73  emporary.databas
0fb0: 65 73 20 65 61 63 68 20 68 61 76 65 20 74 68 65  es each have the
0fc0: 69 72 20 6f 77 6e 20 70 72 69 76 61 74 65 20 64  ir own private d
0fd0: 61 74 61 62 61 73 65 2e 20 20 54 65 6d 70 6f 72  atabase.  Tempor
0fe0: 61 72 79 20 64 61 74 61 62 61 73 65 73 20 61 72  ary databases ar
0ff0: 65 0a 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e.automatically 
1000: 64 65 6c 65 74 65 64 20 77 68 65 6e 20 74 68 65  deleted when the
1010: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 61 74   connection that
1020: 20 63 72 65 61 74 65 64 20 74 68 65 6d 20 63 6c   created them cl
1030: 6f 73 65 73 2e 3c 2f 70 3e 0a 0a 3c 70 3e 45 76  oses.</p>..<p>Ev
1040: 65 6e 20 74 68 6f 75 67 68 20 61 20 64 69 73 6b  en though a disk
1050: 20 66 69 6c 65 20 69 73 20 61 6c 6c 6f 63 61 74   file is allocat
1060: 65 64 20 66 6f 72 20 65 61 63 68 20 74 65 6d 70  ed for each temp
1070: 6f 72 61 72 79 20 64 61 74 61 62 61 73 65 2c 20  orary database, 
1080: 69 6e 0a 70 72 61 63 74 69 63 65 20 74 68 65 20  in.practice the 
1090: 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61 62 61  temporary databa
10a0: 73 65 20 75 73 75 61 6c 6c 79 20 72 65 73 69 64  se usually resid
10b0: 65 73 20 69 6e 20 74 68 65 20 69 6e 2d 6d 65 6d  es in the in-mem
10c0: 6f 72 79 20 70 61 67 65 72 0a 63 61 63 68 65 20  ory pager.cache 
10d0: 61 6e 64 20 68 65 6e 63 65 20 69 73 20 76 65 72  and hence is ver
10e0: 79 20 6c 69 74 74 6c 65 20 64 69 66 66 65 72 65  y little differe
10f0: 6e 63 65 20 62 65 74 77 65 65 6e 20 61 20 70 75  nce between a pu
1100: 72 65 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74  re in-memory dat
1110: 61 62 61 73 65 0a 63 72 65 61 74 65 64 20 62 79  abase.created by
1120: 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 61 6e 64 20   ":memory:" and 
1130: 61 20 74 65 6d 70 6f 72 61 72 79 20 64 61 74 61  a temporary data
1140: 62 61 73 65 20 63 72 65 61 74 65 64 20 62 79 20  base created by 
1150: 61 6e 20 65 6d 70 74 79 20 66 69 6c 65 6e 61 6d  an empty filenam
1160: 65 2e 0a 54 68 65 20 73 6f 6c 65 20 64 69 66 66  e..The sole diff
1170: 65 72 65 6e 63 65 20 69 73 20 74 68 61 74 20 61  erence is that a
1180: 20 22 3a 6d 65 6d 6f 72 79 3a 22 20 64 61 74 61   ":memory:" data
1190: 62 61 73 65 20 6d 75 73 74 20 72 65 6d 61 69 6e  base must remain
11a0: 20 69 6e 20 6d 65 6d 6f 72 79 0a 61 74 20 61 6c   in memory.at al
11b0: 6c 20 74 69 6d 65 73 20 77 68 65 72 65 61 73 20  l times whereas 
11c0: 70 61 72 74 73 20 6f 66 20 61 20 74 65 6d 70 6f  parts of a tempo
11d0: 72 61 72 79 20 64 61 74 61 62 61 73 65 20 6d 69  rary database mi
11e0: 67 68 74 20 62 65 20 66 6c 75 73 68 65 64 20 74  ght be flushed t
11f0: 6f 0a 64 69 73 6b 20 69 66 20 64 61 74 61 62 61  o.disk if databa
1200: 73 65 20 62 65 63 6f 6d 65 73 20 6c 61 72 67 65  se becomes large
1210: 20 6f 72 20 69 66 20 53 51 4c 69 74 65 20 63 6f   or if SQLite co
1220: 6d 65 73 20 75 6e 64 65 72 20 6d 65 6d 6f 72 79  mes under memory
1230: 20 70 72 65 73 73 75 72 65 2e 3c 2f 70 3e 0a 0a   pressure.</p>..
1240: 3c 70 3e 54 68 65 20 70 72 65 76 69 6f 75 73 20  <p>The previous 
1250: 70 61 72 61 67 72 61 70 68 73 20 64 65 73 63 72  paragraphs descr
1260: 69 62 65 20 74 68 65 20 62 65 68 61 76 69 6f 72  ibe the behavior
1270: 20 6f 66 20 74 65 6d 70 6f 72 61 72 79 20 64 61   of temporary da
1280: 74 61 62 61 73 65 73 0a 75 6e 64 65 72 20 74 68  tabases.under th
1290: 65 20 64 65 66 61 75 6c 74 20 53 51 4c 69 74 65  e default SQLite
12a0: 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 20   configuration. 
12b0: 20 41 6e 20 61 70 70 6c 69 63 61 74 69 6f 6e 20   An application 
12c0: 63 61 6e 20 75 73 65 20 74 68 65 0a 5b 74 65 6d  can use the.[tem
12d0: 70 5f 73 74 6f 72 65 20 70 72 61 67 6d 61 5d 20  p_store pragma] 
12e0: 61 6e 64 20 74 68 65 20 5b 53 51 4c 49 54 45 5f  and the [SQLITE_
12f0: 54 45 4d 50 5f 53 54 4f 52 45 5d 20 63 6f 6d 70  TEMP_STORE] comp
1300: 69 6c 65 2d 74 69 6d 65 20 70 61 72 61 6d 65 74  ile-time paramet
1310: 65 72 20 74 6f 0a 66 6f 72 63 65 20 74 65 6d 70  er to.force temp
1320: 6f 72 61 72 79 20 64 61 74 61 62 61 73 65 73 20  orary databases 
1330: 74 6f 20 62 65 68 61 76 65 20 61 73 20 70 75 72  to behave as pur
1340: 65 20 69 6e 2d 6d 65 6d 6f 72 79 20 64 61 74 61  e in-memory data
1350: 62 61 73 65 73 2c 20 69 66 20 64 65 73 69 72 65  bases, if desire
1360: 64 2e 0a 3c 2f 70 3e 0a                          d..</p>.