MySql InnoDb自动增量预取值
如何从Mysql InnoDb获取未来的密钥 Oracle和Postgres都有序列的概念和一个nextval函数。Mysql似乎有点不同MySql InnoDb自动增量预取值,mysql,database,innodb,auto-increment,Mysql,Database,Innodb,Auto Increment,如何从Mysql InnoDb获取未来的密钥 Oracle和Postgres都有序列的概念和一个nextval函数。Mysql似乎有点不同 是否有一些简单的sql语句可以为某个自动递增字段提取1000个将来的键,并确保没有其他事务可以在同一时间或将来的任何时间提取这些值?对于InnoDb表,您可以这样做: 开始一项交易 插入1000条记录 提交事务 Oracle和Postgres都有序列的概念和一个nextval函数。Mysql似乎有点不同 在MySQL中,您可以这样做来查找下一个值- SE
是否有一些简单的sql语句可以为某个自动递增字段提取1000个将来的键,并确保没有其他事务可以在同一时间或将来的任何时间提取这些值?对于InnoDb表,您可以这样做:
- 开始一项交易
- 插入1000条记录
- 提交事务
SELECT MAX(id) + 1 FROM table_name;
但是不能保证自动增量以同样的方式工作。那么你是说InnoDb没有安全的方法来产生一些独特的序列?必须有某种方法事先获取密钥?您可以在自动增量字段中插入NULL。它将强制引擎自己生成新的
id
。是的,但我想在插入后不必进行akward提取就可以恢复其他外键的密钥。我使用的是批插入,因此在插入之前我需要密钥。您可以获得MAX(id)+1,并使用新id(+1)将新记录插入。