Documentation Source Text

Hex Artifact Content
Login

Artifact c845b779f4b18ef1c6e601126e2f1cab66537148:


0000: 3c 74 69 74 6c 65 3e 53 51 4c 69 74 65 20 41 75  <title>SQLite Au
0010: 74 6f 69 6e 63 72 65 6d 65 6e 74 3c 2f 74 69 74  toincrement</tit
0020: 6c 65 3e 0a 3c 68 31 3e 53 51 4c 69 74 65 20 41  le>.<h1>SQLite A
0030: 75 74 6f 69 6e 63 72 65 6d 65 6e 74 3c 2f 68 31  utoincrement</h1
0040: 3e 0a 3c 74 63 6c 3e 68 64 5f 6b 65 79 77 6f 72  >.<tcl>hd_keywor
0050: 64 73 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  ds AUTOINCREMENT
0060: 3c 2f 74 63 6c 3e 0a 0a 3c 70 3e 0a 5e 49 6e 20  </tcl>..<p>.^In 
0070: 53 51 4c 69 74 65 2c 20 65 76 65 72 79 20 72 6f  SQLite, every ro
0080: 77 20 6f 66 20 65 76 65 72 79 20 74 61 62 6c 65  w of every table
0090: 20 68 61 73 20 61 6e 20 36 34 2d 62 69 74 20 73   has an 64-bit s
00a0: 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 5b 52  igned integer [R
00b0: 4f 57 49 44 5d 2e 0a 5e 54 68 65 20 52 4f 57 49  OWID]..^The ROWI
00c0: 44 20 66 6f 72 20 65 61 63 68 20 72 6f 77 20 69  D for each row i
00d0: 73 20 75 6e 69 71 75 65 20 61 6d 6f 6e 67 20 61  s unique among a
00e0: 6c 6c 20 72 6f 77 73 20 69 6e 20 74 68 65 20 73  ll rows in the s
00f0: 61 6d 65 20 74 61 62 6c 65 2e 0a 3c 2f 70 3e 0a  ame table..</p>.
0100: 0a 3c 70 3e 0a 5e 28 59 6f 75 20 63 61 6e 20 61  .<p>.^(You can a
0110: 63 63 65 73 73 20 74 68 65 20 52 4f 57 49 44 20  ccess the ROWID 
0120: 6f 66 20 61 6e 20 53 51 4c 69 74 65 20 74 61 62  of an SQLite tab
0130: 6c 65 20 75 73 69 6e 67 20 6f 6e 65 20 74 68 65  le using one the
0140: 20 73 70 65 63 69 61 6c 20 63 6f 6c 75 6d 6e 0a   special column.
0150: 6e 61 6d 65 73 20 52 4f 57 49 44 2c 20 5f 52 4f  names ROWID, _RO
0160: 57 49 44 5f 2c 20 6f 72 20 4f 49 44 2e 0a 45 78  WID_, or OID..Ex
0170: 63 65 70 74 20 69 66 20 79 6f 75 20 64 65 63 6c  cept if you decl
0180: 61 72 65 20 61 6e 20 6f 72 64 69 6e 61 72 79 20  are an ordinary 
0190: 74 61 62 6c 65 20 63 6f 6c 75 6d 6e 20 74 6f 20  table column to 
01a0: 75 73 65 20 6f 6e 65 20 6f 66 20 74 68 6f 73 65  use one of those
01b0: 20 73 70 65 63 69 61 6c 0a 6e 61 6d 65 73 2c 20   special.names, 
01c0: 74 68 65 6e 20 74 68 65 20 75 73 65 20 6f 66 20  then the use of 
01d0: 74 68 61 74 20 6e 61 6d 65 20 77 69 6c 6c 20 72  that name will r
01e0: 65 66 65 72 20 74 6f 20 74 68 65 20 64 65 63 6c  efer to the decl
01f0: 61 72 65 64 20 63 6f 6c 75 6d 6e 20 6e 6f 74 0a  ared column not.
0200: 74 6f 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20  to the internal 
0210: 52 4f 57 49 44 2e 29 5e 0a 3c 2f 70 3e 0a 0a 3c  ROWID.)^.</p>..<
0220: 70 3e 0a 5e 49 66 20 61 20 74 61 62 6c 65 20 63  p>.^If a table c
0230: 6f 6e 74 61 69 6e 73 20 61 20 63 6f 6c 75 6d 6e  ontains a column
0240: 20 6f 66 20 74 79 70 65 20 5b 49 4e 54 45 47 45   of type [INTEGE
0250: 52 20 50 52 49 4d 41 52 59 20 4b 45 59 5d 2c 20  R PRIMARY KEY], 
0260: 74 68 65 6e 20 74 68 61 74 0a 63 6f 6c 75 6d 6e  then that.column
0270: 20 62 65 63 6f 6d 65 73 20 61 6e 20 61 6c 69 61   becomes an alia
0280: 73 20 66 6f 72 20 74 68 65 20 52 4f 57 49 44 2e  s for the ROWID.
0290: 20 20 5e 59 6f 75 20 63 61 6e 20 74 68 65 6e 20    ^You can then 
02a0: 61 63 63 65 73 73 20 74 68 65 20 52 4f 57 49 44  access the ROWID
02b0: 0a 75 73 69 6e 67 20 61 6e 79 20 6f 66 20 66 6f  .using any of fo
02c0: 75 72 20 64 69 66 66 65 72 65 6e 74 20 6e 61 6d  ur different nam
02d0: 65 73 2c 20 74 68 65 20 6f 72 69 67 69 6e 61 6c  es, the original
02e0: 20 74 68 72 65 65 20 6e 61 6d 65 73 20 64 65 73   three names des
02f0: 63 72 69 62 65 64 20 61 62 6f 76 65 0a 6f 72 20  cribed above.or 
0300: 74 68 65 20 6e 61 6d 65 20 67 69 76 65 6e 20 74  the name given t
0310: 6f 20 74 68 65 20 5b 49 4e 54 45 47 45 52 20 50  o the [INTEGER P
0320: 52 49 4d 41 52 59 20 4b 45 59 5d 20 63 6f 6c 75  RIMARY KEY] colu
0330: 6d 6e 2e 20 20 5e 41 6c 6c 20 74 68 65 73 65 20  mn.  ^All these 
0340: 6e 61 6d 65 73 20 61 72 65 0a 61 6c 69 61 73 65  names are.aliase
0350: 73 20 66 6f 72 20 6f 6e 65 20 61 6e 6f 74 68 65  s for one anothe
0360: 72 20 61 6e 64 20 77 6f 72 6b 20 65 71 75 61 6c  r and work equal
0370: 6c 79 20 77 65 6c 6c 20 69 6e 20 61 6e 79 20 63  ly well in any c
0380: 6f 6e 74 65 78 74 2e 0a 3c 2f 70 3e 0a 0a 3c 70  ontext..</p>..<p
0390: 3e 0a 5e 57 68 65 6e 20 61 20 6e 65 77 20 72 6f  >.^When a new ro
03a0: 77 20 69 73 20 69 6e 73 65 72 74 65 64 20 69 6e  w is inserted in
03b0: 74 6f 20 61 6e 20 53 51 4c 69 74 65 20 74 61 62  to an SQLite tab
03c0: 6c 65 2c 20 74 68 65 20 52 4f 57 49 44 20 63 61  le, the ROWID ca
03d0: 6e 20 65 69 74 68 65 72 0a 62 65 20 73 70 65 63  n either.be spec
03e0: 69 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66  ified as part of
03f0: 20 74 68 65 20 49 4e 53 45 52 54 20 73 74 61 74   the INSERT stat
0400: 65 6d 65 6e 74 20 6f 72 20 69 74 20 63 61 6e 20  ement or it can 
0410: 62 65 20 61 73 73 69 67 6e 65 64 0a 61 75 74 6f  be assigned.auto
0420: 6d 61 74 69 63 61 6c 6c 79 20 62 79 20 74 68 65  matically by the
0430: 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e 65   database engine
0440: 2e 20 20 5e 28 54 6f 20 73 70 65 63 69 66 79 20  .  ^(To specify 
0450: 61 20 52 4f 57 49 44 20 6d 61 6e 75 61 6c 6c 79  a ROWID manually
0460: 2c 0a 6a 75 73 74 20 69 6e 63 6c 75 64 65 20 69  ,.just include i
0470: 74 20 69 6e 20 74 68 65 20 6c 69 73 74 20 6f 66  t in the list of
0480: 20 76 61 6c 75 65 73 20 74 6f 20 62 65 20 69 6e   values to be in
0490: 73 65 72 74 65 64 2e 20 20 46 6f 72 20 65 78 61  serted.  For exa
04a0: 6d 70 6c 65 3a 0a 3c 2f 70 3e 0a 0a 3c 62 6c 6f  mple:.</p>..<blo
04b0: 63 6b 71 75 6f 74 65 3e 3c 70 72 65 3e 0a 43 52  ckquote><pre>.CR
04c0: 45 41 54 45 20 54 41 42 4c 45 20 74 65 73 74 31  EATE TABLE test1
04d0: 28 61 20 49 4e 54 2c 20 62 20 54 45 58 54 29 3b  (a INT, b TEXT);
04e0: 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 65 73  .INSERT INTO tes
04f0: 74 31 28 72 6f 77 69 64 2c 20 61 2c 20 62 29 20  t1(rowid, a, b) 
0500: 56 41 4c 55 45 53 28 31 32 33 2c 20 35 2c 20 27  VALUES(123, 5, '
0510: 68 65 6c 6c 6f 27 29 3b 0a 3c 2f 70 72 65 3e 3c  hello');.</pre><
0520: 2f 62 6c 6f 63 6b 71 75 6f 74 65 3e 29 5e 0a 0a  /blockquote>)^..
0530: 3c 70 3e 0a 5e 49 66 20 6e 6f 20 52 4f 57 49 44  <p>.^If no ROWID
0540: 20 69 73 20 73 70 65 63 69 66 69 65 64 20 6f 6e   is specified on
0550: 20 74 68 65 20 69 6e 73 65 72 74 2c 20 61 6e 20   the insert, an 
0560: 61 70 70 72 6f 70 72 69 61 74 65 20 52 4f 57 49  appropriate ROWI
0570: 44 20 69 73 20 63 72 65 61 74 65 64 0a 61 75 74  D is created.aut
0580: 6f 6d 61 74 69 63 61 6c 6c 79 2e 20 20 5e 54 68  omatically.  ^Th
0590: 65 20 75 73 75 61 6c 20 61 6c 67 6f 72 69 74 68  e usual algorith
05a0: 6d 20 69 73 20 74 6f 20 67 69 76 65 20 74 68 65  m is to give the
05b0: 20 6e 65 77 6c 79 20 63 72 65 61 74 65 64 20 72   newly created r
05c0: 6f 77 0a 61 20 52 4f 57 49 44 20 74 68 61 74 20  ow.a ROWID that 
05d0: 69 73 20 6f 6e 65 20 6c 61 72 67 65 72 20 74 68  is one larger th
05e0: 61 6e 20 74 68 65 20 6c 61 72 67 65 73 74 20 52  an the largest R
05f0: 4f 57 49 44 20 69 6e 20 74 68 65 20 74 61 62 6c  OWID in the tabl
0600: 65 20 70 72 69 6f 72 0a 74 6f 20 74 68 65 20 69  e prior.to the i
0610: 6e 73 65 72 74 2e 20 20 5e 49 66 20 74 68 65 20  nsert.  ^If the 
0620: 74 61 62 6c 65 20 69 73 20 69 6e 69 74 69 61 6c  table is initial
0630: 6c 79 20 65 6d 70 74 79 2c 20 74 68 65 6e 20 61  ly empty, then a
0640: 20 52 4f 57 49 44 20 6f 66 20 31 20 69 73 0a 75   ROWID of 1 is.u
0650: 73 65 64 2e 20 20 5e 49 66 20 74 68 65 20 6c 61  sed.  ^If the la
0660: 72 67 65 73 74 20 52 4f 57 49 44 20 69 73 20 65  rgest ROWID is e
0670: 71 75 61 6c 20 74 6f 20 74 68 65 20 6c 61 72 67  qual to the larg
0680: 65 73 74 20 70 6f 73 73 69 62 6c 65 20 69 6e 74  est possible int
0690: 65 67 65 72 0a 28 39 32 32 33 33 37 32 30 33 36  eger.(9223372036
06a0: 38 35 34 37 37 35 38 30 37 29 20 74 68 65 6e 20  854775807) then 
06b0: 74 68 65 20 64 61 74 61 62 61 73 65 0a 65 6e 67  the database.eng
06c0: 69 6e 65 20 73 74 61 72 74 73 20 70 69 63 6b 69  ine starts picki
06d0: 6e 67 20 63 61 6e 64 69 64 61 74 65 20 52 4f 57  ng candidate ROW
06e0: 49 44 73 20 61 74 20 72 61 6e 64 6f 6d 20 75 6e  IDs at random un
06f0: 74 69 6c 20 69 74 20 66 69 6e 64 73 20 6f 6e 65  til it finds one
0700: 0a 74 68 61 74 20 69 73 20 6e 6f 74 20 70 72 65  .that is not pre
0710: 76 69 6f 75 73 6c 79 20 75 73 65 64 2e 0a 3c 2f  viously used..</
0720: 70 3e 0a 0a 3c 70 3e 0a 5e 54 68 65 20 6e 6f 72  p>..<p>.^The nor
0730: 6d 61 6c 20 52 4f 57 49 44 20 73 65 6c 65 63 74  mal ROWID select
0740: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 20 64 65  ion algorithm de
0750: 73 63 72 69 62 65 64 20 61 62 6f 76 65 0a 77 69  scribed above.wi
0760: 6c 6c 20 67 65 6e 65 72 61 74 65 20 6d 6f 6e 6f  ll generate mono
0770: 74 6f 6e 69 63 61 6c 6c 79 20 69 6e 63 72 65 61  tonically increa
0780: 73 69 6e 67 0a 75 6e 69 71 75 65 20 52 4f 57 49  sing.unique ROWI
0790: 44 73 20 61 73 20 6c 6f 6e 67 20 61 73 20 79 6f  Ds as long as yo
07a0: 75 20 6e 65 76 65 72 20 75 73 65 20 74 68 65 20  u never use the 
07b0: 6d 61 78 69 6d 75 6d 20 52 4f 57 49 44 20 76 61  maximum ROWID va
07c0: 6c 75 65 20 61 6e 64 20 79 6f 75 20 6e 65 76 65  lue and you neve
07d0: 72 0a 64 65 6c 65 74 65 20 74 68 65 20 65 6e 74  r.delete the ent
07e0: 72 79 20 69 6e 20 74 68 65 20 74 61 62 6c 65 20  ry in the table 
07f0: 77 69 74 68 20 74 68 65 20 6c 61 72 67 65 73 74  with the largest
0800: 20 52 4f 57 49 44 2e 20 0a 5e 49 66 20 79 6f 75   ROWID. .^If you
0810: 20 65 76 65 72 20 64 65 6c 65 74 65 20 72 6f 77   ever delete row
0820: 73 20 6f 72 20 69 66 20 79 6f 75 20 65 76 65 72  s or if you ever
0830: 20 63 72 65 61 74 65 20 61 20 72 6f 77 20 77 69   create a row wi
0840: 74 68 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 70  th the maximum p
0850: 6f 73 73 69 62 6c 65 0a 52 4f 57 49 44 2c 20 74  ossible.ROWID, t
0860: 68 65 6e 20 52 4f 57 49 44 73 20 66 72 6f 6d 20  hen ROWIDs from 
0870: 70 72 65 76 69 6f 75 73 6c 79 20 64 65 6c 65 74  previously delet
0880: 65 64 20 72 6f 77 73 20 6d 69 67 68 74 20 62 65  ed rows might be
0890: 20 72 65 75 73 65 64 20 77 68 65 6e 20 63 72 65   reused when cre
08a0: 61 74 69 6e 67 0a 6e 65 77 20 72 6f 77 73 20 61  ating.new rows a
08b0: 6e 64 20 6e 65 77 6c 79 20 63 72 65 61 74 65 64  nd newly created
08c0: 20 52 4f 57 49 44 73 20 6d 69 67 68 74 20 6e 6f   ROWIDs might no
08d0: 74 20 62 65 20 69 6e 20 73 74 72 69 63 74 6c 79  t be in strictly
08e0: 20 61 63 63 65 6e 64 69 6e 67 20 6f 72 64 65 72   accending order
08f0: 2e 0a 3c 2f 70 3e 0a 0a 0a 3c 68 32 3e 54 68 65  ..</p>...<h2>The
0900: 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 20 4b   AUTOINCREMENT K
0910: 65 79 77 6f 72 64 3c 2f 68 32 3e 0a 0a 3c 70 3e  eyword</h2>..<p>
0920: 0a 5e 49 66 20 61 20 63 6f 6c 75 6d 6e 20 68 61  .^If a column ha
0930: 73 20 74 68 65 20 74 79 70 65 20 49 4e 54 45 47  s the type INTEG
0940: 45 52 20 50 52 49 4d 41 52 59 20 4b 45 59 20 41  ER PRIMARY KEY A
0950: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 20 74 68 65  UTOINCREMENT the
0960: 6e 20 61 20 73 6c 69 67 68 74 6c 79 0a 64 69 66  n a slightly.dif
0970: 66 65 72 65 6e 74 20 52 4f 57 49 44 20 73 65 6c  ferent ROWID sel
0980: 65 63 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  ection algorithm
0990: 20 69 73 20 75 73 65 64 2e 20 20 0a 5e 54 68 65   is used.  .^The
09a0: 20 52 4f 57 49 44 20 63 68 6f 73 65 6e 20 66 6f   ROWID chosen fo
09b0: 72 20 74 68 65 20 6e 65 77 20 72 6f 77 20 69 73  r the new row is
09c0: 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 6c 61   at least one la
09d0: 72 67 65 72 20 74 68 61 6e 20 74 68 65 20 6c 61  rger than the la
09e0: 72 67 65 73 74 20 52 4f 57 49 44 0a 74 68 61 74  rgest ROWID.that
09f0: 20 68 61 73 20 65 76 65 72 20 62 65 66 6f 72 65   has ever before
0a00: 20 65 78 69 73 74 65 64 20 69 6e 20 74 68 61 74   existed in that
0a10: 20 73 61 6d 65 20 74 61 62 6c 65 2e 20 20 5e 49   same table.  ^I
0a20: 66 20 74 68 65 20 74 61 62 6c 65 20 68 61 73 20  f the table has 
0a30: 6e 65 76 65 72 0a 62 65 66 6f 72 65 20 63 6f 6e  never.before con
0a40: 74 61 69 6e 65 64 20 61 6e 79 20 64 61 74 61 2c  tained any data,
0a50: 20 74 68 65 6e 20 61 20 52 4f 57 49 44 20 6f 66   then a ROWID of
0a60: 20 31 20 69 73 20 75 73 65 64 2e 20 20 5e 49 66   1 is used.  ^If
0a70: 20 74 68 65 20 74 61 62 6c 65 0a 68 61 73 20 70   the table.has p
0a80: 72 65 76 69 6f 75 73 6c 79 20 68 65 6c 64 20 61  reviously held a
0a90: 20 72 6f 77 20 77 69 74 68 20 74 68 65 20 6c 61   row with the la
0aa0: 72 67 65 73 74 20 70 6f 73 73 69 62 6c 65 20 52  rgest possible R
0ab0: 4f 57 49 44 2c 20 74 68 65 6e 20 6e 65 77 20 49  OWID, then new I
0ac0: 4e 53 45 52 54 73 0a 61 72 65 20 6e 6f 74 20 61  NSERTs.are not a
0ad0: 6c 6c 6f 77 65 64 20 61 6e 64 20 61 6e 79 20 61  llowed and any a
0ae0: 74 74 65 6d 70 74 20 74 6f 20 69 6e 73 65 72 74  ttempt to insert
0af0: 20 61 20 6e 65 77 20 72 6f 77 20 77 69 6c 6c 20   a new row will 
0b00: 66 61 69 6c 20 77 69 74 68 20 61 6e 0a 53 51 4c  fail with an.SQL
0b10: 49 54 45 5f 46 55 4c 4c 20 65 72 72 6f 72 2e 0a  ITE_FULL error..
0b20: 3c 2f 70 3e 0a 0a 3c 70 3e 0a 5e 53 51 4c 69 74  </p>..<p>.^SQLit
0b30: 65 20 6b 65 65 70 73 20 74 72 61 63 6b 20 6f 66  e keeps track of
0b40: 20 74 68 65 20 6c 61 72 67 65 73 74 20 52 4f 57   the largest ROW
0b50: 49 44 20 74 68 61 74 20 61 20 74 61 62 6c 65 20  ID that a table 
0b60: 68 61 73 20 65 76 65 72 20 68 65 6c 64 20 75 73  has ever held us
0b70: 69 6e 67 0a 74 68 65 20 73 70 65 63 69 61 6c 20  ing.the special 
0b80: 53 51 4c 49 54 45 5f 53 45 51 55 45 4e 43 45 20  SQLITE_SEQUENCE 
0b90: 74 61 62 6c 65 2e 20 20 5e 54 68 65 20 53 51 4c  table.  ^The SQL
0ba0: 49 54 45 5f 53 45 51 55 45 4e 43 45 20 74 61 62  ITE_SEQUENCE tab
0bb0: 6c 65 20 69 73 20 63 72 65 61 74 65 64 0a 61 6e  le is created.an
0bc0: 64 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 61 75  d initialized au
0bd0: 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 68 65 6e  tomatically when
0be0: 65 76 65 72 20 61 20 6e 6f 72 6d 61 6c 20 74 61  ever a normal ta
0bf0: 62 6c 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e  ble that contain
0c00: 73 20 61 6e 0a 41 55 54 4f 49 4e 43 52 45 4d 45  s an.AUTOINCREME
0c10: 4e 54 20 63 6f 6c 75 6d 6e 20 69 73 20 63 72 65  NT column is cre
0c20: 61 74 65 64 2e 20 20 5e 54 68 65 20 63 6f 6e 74  ated.  ^The cont
0c30: 65 6e 74 20 6f 66 20 74 68 65 20 53 51 4c 49 54  ent of the SQLIT
0c40: 45 5f 53 45 51 55 45 4e 43 45 20 74 61 62 6c 65  E_SEQUENCE table
0c50: 0a 63 61 6e 20 62 65 20 6d 6f 64 69 66 69 65 64  .can be modified
0c60: 20 75 73 69 6e 67 20 6f 72 64 69 6e 61 72 79 20   using ordinary 
0c70: 55 50 44 41 54 45 2c 20 49 4e 53 45 52 54 2c 20  UPDATE, INSERT, 
0c80: 61 6e 64 20 44 45 4c 45 54 45 20 73 74 61 74 65  and DELETE state
0c90: 6d 65 6e 74 73 2e 0a 5e 42 75 74 20 6d 61 6b 69  ments..^But maki
0ca0: 6e 67 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73  ng modifications
0cb0: 20 74 6f 20 74 68 69 73 20 74 61 62 6c 65 20 77   to this table w
0cc0: 69 6c 6c 20 6c 69 6b 65 6c 79 20 70 65 72 74 75  ill likely pertu
0cd0: 72 62 20 74 68 65 20 41 55 54 4f 49 4e 43 52 45  rb the AUTOINCRE
0ce0: 4d 45 4e 54 0a 6b 65 79 20 67 65 6e 65 72 61 74  MENT.key generat
0cf0: 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2e 20 20  ion algorithm.  
0d00: 4d 61 6b 65 20 73 75 72 65 20 79 6f 75 20 6b 6e  Make sure you kn
0d10: 6f 77 20 77 68 61 74 20 79 6f 75 20 61 72 65 20  ow what you are 
0d20: 64 6f 69 6e 67 20 62 65 66 6f 72 65 0a 79 6f 75  doing before.you
0d30: 20 75 6e 64 65 72 74 61 6b 65 20 73 75 63 68 20   undertake such 
0d40: 63 68 61 6e 67 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c  changes..</p>..<
0d50: 70 3e 0a 54 68 65 20 62 65 68 61 76 69 6f 72 20  p>.The behavior 
0d60: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 62 79 20 74  implemented by t
0d70: 68 65 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54  he AUTOINCREMENT
0d80: 20 6b 65 79 77 6f 72 64 20 69 73 20 73 75 62 74   keyword is subt
0d90: 6c 79 20 64 69 66 66 65 72 65 6e 74 0a 66 72 6f  ly different.fro
0da0: 6d 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 65  m the default be
0db0: 68 61 76 69 6f 72 2e 20 20 5e 57 69 74 68 20 41  havior.  ^With A
0dc0: 55 54 4f 49 4e 43 52 45 4d 45 4e 54 2c 20 72 6f  UTOINCREMENT, ro
0dd0: 77 73 20 77 69 74 68 20 61 75 74 6f 6d 61 74 69  ws with automati
0de0: 63 61 6c 6c 79 0a 73 65 6c 65 63 74 65 64 20 52  cally.selected R
0df0: 4f 57 49 44 73 20 61 72 65 20 67 75 61 72 61 6e  OWIDs are guaran
0e00: 74 65 65 64 20 74 6f 20 68 61 76 65 20 52 4f 57  teed to have ROW
0e10: 49 44 73 20 74 68 61 74 20 68 61 76 65 20 6e 65  IDs that have ne
0e20: 76 65 72 20 62 65 65 6e 20 75 73 65 64 0a 62 65  ver been used.be
0e30: 66 6f 72 65 20 62 79 20 74 68 65 20 73 61 6d 65  fore by the same
0e40: 20 74 61 62 6c 65 20 69 6e 20 74 68 65 20 73 61   table in the sa
0e50: 6d 65 20 64 61 74 61 62 61 73 65 2e 20 20 5e 41  me database.  ^A
0e60: 6e 64 20 74 68 65 20 61 75 74 6f 6d 61 74 69 63  nd the automatic
0e70: 61 6c 6c 79 20 67 65 6e 65 72 61 74 65 64 0a 52  ally generated.R
0e80: 4f 57 49 44 73 20 61 72 65 20 67 75 61 72 61 6e  OWIDs are guaran
0e90: 74 65 65 64 20 74 6f 20 62 65 20 6d 6f 6e 6f 74  teed to be monot
0ea0: 6f 6e 69 63 61 6c 6c 79 20 69 6e 63 72 65 61 73  onically increas
0eb0: 69 6e 67 2e 20 20 54 68 65 73 65 20 61 72 65 20  ing.  These are 
0ec0: 69 6d 70 6f 72 74 61 6e 74 0a 70 72 6f 70 65 72  important.proper
0ed0: 74 69 65 73 20 69 6e 20 63 65 72 74 61 69 6e 20  ties in certain 
0ee0: 61 70 70 6c 69 63 61 74 69 6f 6e 73 2e 20 20 42  applications.  B
0ef0: 75 74 20 69 66 20 79 6f 75 72 20 61 70 70 6c 69  ut if your appli
0f00: 63 61 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 0a  cation does not.
0f10: 6e 65 65 64 20 74 68 65 73 65 20 70 72 6f 70 65  need these prope
0f20: 72 74 69 65 73 2c 20 79 6f 75 20 73 68 6f 75 6c  rties, you shoul
0f30: 64 20 70 72 6f 62 61 62 6c 79 20 73 74 61 79 20  d probably stay 
0f40: 77 69 74 68 20 74 68 65 20 64 65 66 61 75 6c 74  with the default
0f50: 20 62 65 68 61 76 69 6f 72 0a 73 69 6e 63 65 20   behavior.since 
0f60: 74 68 65 20 75 73 65 20 6f 66 20 41 55 54 4f 49  the use of AUTOI
0f70: 4e 43 52 45 4d 45 4e 54 20 72 65 71 75 69 72 65  NCREMENT require
0f80: 73 20 61 64 64 69 74 69 6f 6e 61 6c 20 77 6f 72  s additional wor
0f90: 6b 20 74 6f 20 62 65 20 64 6f 6e 65 0a 61 73 20  k to be done.as 
0fa0: 65 61 63 68 20 72 6f 77 20 69 73 20 69 6e 73 65  each row is inse
0fb0: 72 74 65 64 20 61 6e 64 20 74 68 75 73 20 63 61  rted and thus ca
0fc0: 75 73 65 73 20 49 4e 53 45 52 54 73 20 74 6f 20  uses INSERTs to 
0fd0: 72 75 6e 20 61 20 6c 69 74 74 6c 65 20 73 6c 6f  run a little slo
0fe0: 77 65 72 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 5e 4e  wer..</p>..<p>^N
0ff0: 6f 74 65 20 74 68 61 74 20 22 6d 6f 6e 6f 74 6f  ote that "monoto
1000: 6e 69 63 61 6c 6c 79 20 69 6e 63 72 65 61 73 69  nically increasi
1010: 6e 67 22 20 64 6f 65 73 20 6e 6f 74 20 69 6d 70  ng" does not imp
1020: 6c 79 20 74 68 61 74 20 74 68 65 20 52 4f 57 49  ly that the ROWI
1030: 44 20 61 6c 77 61 79 73 0a 69 6e 63 72 65 61 73  D always.increas
1040: 65 73 20 62 79 20 65 78 61 63 74 6c 79 20 6f 6e  es by exactly on
1050: 65 2e 20 20 5e 4f 6e 65 20 69 73 20 74 68 65 20  e.  ^One is the 
1060: 75 73 75 61 6c 20 69 6e 63 72 65 6d 65 6e 74 2e  usual increment.
1070: 20 20 5e 48 6f 77 65 76 65 72 2c 20 69 66 20 61    ^However, if a
1080: 6e 0a 69 6e 73 65 72 74 20 66 61 69 6c 73 20 64  n.insert fails d
1090: 75 65 20 74 6f 20 28 66 6f 72 20 65 78 61 6d 70  ue to (for examp
10a0: 6c 65 29 20 61 20 75 6e 69 71 75 65 6e 65 73 73  le) a uniqueness
10b0: 20 63 6f 6e 73 74 72 61 69 6e 74 2c 20 74 68 65   constraint, the
10c0: 20 52 4f 57 49 44 20 6f 66 0a 74 68 65 20 66 61   ROWID of.the fa
10d0: 69 6c 65 64 20 69 6e 73 65 72 74 69 6f 6e 20 61  iled insertion a
10e0: 74 74 65 6d 70 74 20 6d 69 67 68 74 20 6e 6f 74  ttempt might not
10f0: 20 62 65 20 72 65 75 73 65 64 20 6f 6e 20 73 75   be reused on su
1100: 62 73 65 71 75 65 6e 74 20 69 6e 73 65 72 74 73  bsequent inserts
1110: 2c 0a 72 65 73 75 6c 74 69 6e 67 20 69 6e 20 67  ,.resulting in g
1120: 61 70 73 20 69 6e 20 74 68 65 20 52 4f 57 49 44  aps in the ROWID
1130: 20 73 65 71 75 65 6e 63 65 2e 20 20 5e 41 55 54   sequence.  ^AUT
1140: 4f 49 4e 43 52 45 4d 45 4e 54 20 67 75 61 72 61  OINCREMENT guara
1150: 6e 74 65 65 73 20 74 68 61 74 0a 61 75 74 6f 6d  ntees that.autom
1160: 61 74 69 63 61 6c 6c 79 20 63 68 6f 73 65 6e 20  atically chosen 
1170: 52 4f 57 49 44 73 20 77 69 6c 6c 20 62 65 20 69  ROWIDs will be i
1180: 6e 63 72 65 61 73 69 6e 67 20 62 75 74 20 6e 6f  ncreasing but no
1190: 74 20 74 68 61 74 20 74 68 65 79 20 77 69 6c 6c  t that they will
11a0: 20 62 65 0a 73 65 71 75 65 6e 74 69 61 6c 2e 3c   be.sequential.<
11b0: 2f 70 3e 0a                                      /p>.