mysql insert一条记录后怎样返回创建记录的主键id,last

mysql insert一条记录后怎样返回创建记录的主键id,last,第1张

mysql

insert一条记录后怎样返回创建记录的主键id,last

使用

mysqli

的方法是:

$mysqli->insert_id

是返回刚刚插入的那条记录的

id

select

last_insert_id()

是返回最后插入的记录id

简单情况下:进入原来mysql安装路径下的data文件夹下,找到相应的库和ibdata1,进行copy,就可回复原来的数据

复杂情况下:

从另一台机上把MySQL数据库的mysql文件夹拷贝到本地机上,目的是恢复本地机对数据的访问和 *** 作。经过如下几种情况的 *** 作。

1.

在本地重装MySQL(安装目录D:\Program

Files\MySQL\MySQL

Server

5.0),直接把mysql文件夹拷贝至D:\Program

Files\MySQL\MySQL

Server

5.0\。结果,失败:数据库连接错误。

2.

卸载后重装MySQL,将D:\Program

Files\MySQL\MySQL

Server

5.0\下的数据备份,只把mysql\data文件夹全部内容拷贝到D:\Program

Files\MySQL\MySQL

Server

5.0\data下。结果,失败:数据库连接错误。将备份的数据还完覆盖。结果,失败,还是连接不上数据库。

3.

卸载后重装MySQL,将mysql\data文件夹里的cf1,last文件夹(这两个是原来MySQL里的数据库)拷贝进D:\Program

Files\MySQL\MySQL

Server

5.0\data。连接成功,在Navicat

for

MySQL里看到数据库cf1和last,但是不能访问,因为数据全为零。明白了原来data里以数据库命名的文件存储的是数据库的表结构,不是元数据。下一步,把data文件夹里的ibdata1文件(3.4G大,明显存储了元数据)拷贝到D:\Program

Files\MySQL\MySQL

Server

5.0\data里,代替原来的ibdata1文件。重启电脑,打开Navicat

for

MySQL,连接成功,数据可以访问 *** 作。

至此, *** 作终于成功。其实当初在那台机上把数据导出来,而不是现在直接把文件夹mysql复制过来会更容易恢复。但那台机已经重装了系统,也就是说MySQL失效了。

你可以认为这是用select 声明变量和初始化变量的一种方式。

别的数据库不这么写,比如sqlserver 如果这么写肯定让你先声明。

--------

SELECT @last := LAST_INSERT_ID()

变量是 @last

:=是赋值

LAST_INSERT_ID()

返回最后一个 INSERT 或 UPDATE *** 作为 AUTO_INCREMENT 列设置的最新发生的值.

LAST_INSERT_ID是基于单个connection的, 不可能被其它的客户端连接改变。

比如说你有一个表A,A里有一个自增列。

当你插入一条记录后,自增列到 3 ,那么

LAST_INSERT_ID() 在当前连接中

就返回3

--

SELECT @last := LAST_INSERT_ID() as 最后一次自增列的值。

这个函数跟表无关联。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7295790.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存