仅在选择,更新或仅使用SQL插入后获取主键?

时间:2012-09-02 03:59:41

标签: mysql sql database

如何通过插入来获取主键(假设通过查看显示键知道他的名字)? 如何获取受更新影响的行的主键? (与前一种情况一样,与密钥名称无关)。 如何从选择查询返回主键(即使键不是被调查的字段之一,也在查询中)。

我需要在我的应用程序中插入,更新和选择后运行的SQLs命令来获取此类信息,这有可能吗? 我的数据库是MySQL。

我只需要sqls,因为我在许多应用程序(java和php)中制作缓存查询的逻辑,并希望逻辑独立于语言。

示例:

从人物中选择姓名

我需要在返回这些人的PK后执行查询

1 个答案:

答案 0 :(得分:0)

SELECT LAST_INSERT_ID();

严肃地说,将“插入mysql的主键”放入Google可以获得Stack Overflow的答案作为第一个结果。

编辑:基于评论的更多讨论。

如果要查看哪些行受更新影响,只需使用与UPDATE语句相同的WHERE子句和JOIN条件执行SELECT,例如:

UPDATE foo SET a = 5 WHERE b > 10;

SELECT id FROM foo WHERE b > 10;

如果要插入到没有自动增量主键的表中,则不需要执行任何特殊操作。您已经知道新主键是什么,因为您自己在INSERT语句中设置它。如果您希望代码能够处理来自将跟踪PK更改的代码之外的INSERT语句,那么您将需要解析INSERT语句,或者让调用代码提供有关主键的信息。