我想获取最后一个受影响的表名(插入后)。
我尝试使用mysql_insert_id()
,但我只获得了id
。
我也想要表名。
任何人都可以向我提出我的问题的想法
答案 0 :(得分:0)
您在评论中提到您正在使用常用功能来应用更改,从而阻止您“了解”您插入的最后一个表格。
如果是这样的话:你的逻辑存在缺陷。
MySQL不会告诉你最后一个表是INSERT的。你必须在你的函数中写一个钩子,你最后知道你要更新的表。无论您使用什么功能,在执行插入之前,必须在某个时刻指定表名。您在此处存储表名称。
根据您的需要,您可以通过多种方式实现这一目标:
答案 1 :(得分:0)
如果你有一个数据库,你可以使用information_schema
数据库:
SELECT TABLE_SCHEMA, TABLE_NAME, UPDATE_TIME
FROM TABLES
ORDER BY UPDATE_TIME DESC
LIMIT 0,1
在查询后使用此选项,您将获得受影响的表格。
答案 2 :(得分:0)
您可以覆盖this post中定义的mysql_query
函数,保存全局变量或会话中的最后一个呼叫表名称,并祈祷最后一次调用插入完成。
// THIS JUST SAMPLE... use code from link below ^
function custom_mysql_query($query){
if(strstr('INSERT',$query)){
/*GET YOUR TABLE NAME WITH REGEX*/
}
basic_mysql_query($query);
}
这对我来说是非常非常糟糕的解决方案。但理论上可行。
答案 3 :(得分:0)
这是一个拉伸......但是如果:
您可以尝试:
$row = mysql_fetch_assoc(mysql_query("explain $query"));
$table = $row['table'];
从mysql 5.6.3+开始,您可以将explain
与insert into
查询结合起来。
我认为这应该只返回1行。
我自己没有mysql 5.6.3+来测试它。