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 最后一次自增列的值。
这个函数跟表无关联。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)