Mysql入门系列:MySQL的列类型(1)
2006-12-31 10:48:03 来源:WEB开发网(1) MySQL3.23 以前的版本中的AUTO _ I N C R E M E N TMySQL3.23 版以前的AUTO_INCREMENT 列的性能如下:
■ 插入NULL 到AUTO_INCREMENT 列,使MySQL自动地产生下一个序列号并将此序列号自动地插入列中。AUTO_INCREMENT 序列从1开始,因此插入表中的第一个记录得到为1的序列值,而后继插入的记录分别得到序列值2、3 等等。一般,每个自动生成的值都比存储在该列中的当前最大值大1。
■ 插入0 到AUTO_INCREMENT 与插入NULL 到列中的效果一样。插入一行而不指定AUTO_INCREMENT 列的值也与插入NULL 的效果一样。
■ 如果插入一个记录并明确指定AUTO_INCREMENT 列的一个值,将会发生两件事之一。如果已经存在具有该值的某个记录,则出错,因为AUTO_INCREMENT 列中的值必须是惟一的。如果不存在具有该值的记录,那么新记录将被插入,并且如果新记录的AUTO_INCREMENT 列中的值是新的最大值,那么后续行将用该值的下一个值。换句话说,也就是可以通过插入一个具有比当前值大的序列值的记录,来增大序列的计数器。增大计数器会使序列出现空白,但这个特性也有用。例如创建一个具有AUTO _INCREMENT 列的表,但希望序列从1000 而不是1开始。则可以用后述的两种办法之一达到此目的。一个办法是插入具有明确序列值1000 的第一个记录,然后通过插入NULL 到AUTO_INCREMENT 列来插入后续的记录。另一个办法是插入
AUTO_INCREMENT 列值为999 的假记录。然后第一个实际插入的记录将得到一个序列号10 0 0,这时再将假记录删除。
■ 如果将一个不合规定的值插入AUTO_INCREMENT 列,将会出现难以预料的结果。
■ 如果删除了在AUTO_INCREMENT 列中含有最大值的记录,则此值在下一次产生新值时会再次使用。如果删除了表中的所有记录,则所有值都可以重用;相应的序列重新从1开始。
更多精彩
赞助商链接