7

可能重复:
获取 MySQL 中现有行的插入语句

假设我们有一个名为 users 的表:

CREATE TABLE IF NOT EXISTS users(
UID int(11) PRIMARY KEY NOT NULL auto_increment,
fname varchar(100) default NULL,
lname varchar(100) default NULL,
username varchar(20) default NULL UNIQUE,
password blob   
)ENGINE=InnoDB DEFAULT CHARSET=utf8

让我们假设表格中有几行已填满。我知道有一个查询返回表的创建 - > SHOW CREATE TABLE users 但我正在寻找重新创建单独的插入语句以将它们保存在日志中......我知道这听起来很奇怪,但我正在定制CMS 记录了所有内容,并希望更新/删除的行可以在某个时间点回滚......因此我需要从表数据重新创建精确的插入查询(我已经在网上搜索了答案但找不到它...)

是否有一个查询会“自动”返回按主键插入特定行的查询?

我正在寻找可以执行此操作的查询:

SHOW INSERT FROM users WHERE PRIMARY_KEY=2

回报:

INSERT INTO users (UID,fname,lname,username,password) VALUES (2,'somename','somelastname','someusername','someAESencryptedPassword')

我认为这样的查询存在/可能的原因是因为当您使用 php myadmin (cpanel) 备份数据库并打开文件时,您实际上可以查看每个插入以重新创建包含所有行的表时间...

4

2 回答 2

2

没有这样的“命令”(数据被存储,但不是插入它的实际 SQL),按照你的要求去做是没有意义的。您确实意识到您的“日志”会比实际的表和数据本身大 20 倍(至少)?无论如何,如果没有大量工作来追踪它(请参阅下面的评论),它就无法检索 INSERT 语句。

研究事务 SQL,利用服务器日志和事务,并像你应该做的那样定期备份数据,并停止尝试重新发明轮子。:-)

于 2012-10-16T01:59:45.400 回答
0

没有这样的命令来检索原始插入语句。但是,您始终可以根据现有的表结构和数据重新制作插入语句。

以下链接可能会对您有所帮助,这已经被问到了:

获取 MySQL 中现有行的插入语句

另一种可能的选择是使用mysqldump和 php 将数据导出为 SQL 语句。

于 2012-10-16T01:48:45.167 回答