Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql InnoDb自动增量预取值_Mysql_Database_Innodb_Auto Increment - Fatal编程技术网

MySql InnoDb自动增量预取值

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

如何从Mysql InnoDb获取未来的密钥

Oracle和Postgres都有序列的概念和一个nextval函数。Mysql似乎有点不同


是否有一些简单的sql语句可以为某个自动递增字段提取1000个将来的键,并确保没有其他事务可以在同一时间或将来的任何时间提取这些值?

对于InnoDb表,您可以这样做:

  • 开始一项交易
  • 插入1000条记录
  • 提交事务
Oracle和Postgres都有序列的概念和一个nextval函数。Mysql似乎有点不同

在MySQL中,您可以这样做来查找下一个值-

SELECT MAX(id) + 1 FROM table_name;

但是不能保证自动增量以同样的方式工作。

那么你是说InnoDb没有安全的方法来产生一些独特的序列?必须有某种方法事先获取密钥?您可以在自动增量字段中插入NULL。它将强制引擎自己生成新的
id
。是的,但我想在插入后不必进行akward提取就可以恢复其他外键的密钥。我使用的是批插入,因此在插入之前我需要密钥。您可以获得MAX(id)+1,并使用新id(+1)将新记录插入。