mysql本身不提供序列机制,mysql使用auto_increment设置初始值,也能通过修改系统变量auto_increment_increment设置步长,但这是个全局设置,所有表增长的步长都是一样的。mysql一个表只能有一个自增长字段。自增长只能分配给固定表的固定字段,不能倍多个表共用,并且只能是数字类型。
我们在什么情况下可能使用序列呢
1.业务复杂,需要定制和控制主键时(自增主键只能按数字递增的,但是序列可以随心所欲的变化,比如我们按照年、月、日生成主键)
2.希望手工维护自增长,方便数据迁移
3.当事务跨多表,期望事务可靠性时
4.需要业务上有意义的主键时,比如流水号
5.主键很明确地需要和其他表关联
6.期望主键是唯一,但不需要重复列用时
当然也有缺点,主要时程序处理麻烦。而且mysql只能通过触发器模拟,会有一些性能损失。
比较自增主键和序列之间的异同以及优缺点,在mysql中使用自增主键更方便。但这里仍然推荐使用序列,
因为其有更好的定制性和可控性。对于InnoDB,虽然序列的可定制性强,
但是如果使用序列,则不推荐使用char等和非number型数据坐主键,因为这样会影响InnoDB的插入性能
我们要创建--Sequence 管理表
DROP TABLE IF EXISTS sequence;
CREATE TABLE sequence (
name VARCHAR(30) NOT NULL,
current_value INT NOT NULL,
increment INT NOT NUL