0

最後に影響を受けたテーブル名を取得したい (挿入後)。

で試しましmysql_insert_id()たが、 しか得られませんでしidた。テーブル名も欲しい。

誰でも私の問題のアイデアを教えてもらえますか

4

4 に答える 4

0

information_schemaデータベースがある場合は、データベースを使用できます。

SELECT TABLE_SCHEMA, TABLE_NAME, UPDATE_TIME 
FROM TABLES
ORDER BY UPDATE_TIME DESC 
LIMIT 0,1

クエリの後にこれを使用すると、影響を受けるテーブルが取得されます。

于 2013-04-11T13:08:01.850 に答える
0

コメントで、変更を適用するために共通の関数を使用しているため、最後に挿入したテーブルが何であるかを「知る」ことができないと述べています。

その場合:あなたのロジックには欠陥があります。

MySQL は、INSERT を行った最後のテーブルが何であるかを教えてくれません。どのテーブルを更新するかを最後に知る関数にフックを記述する必要があります。使用する関数に関係なく、挿入を実行する前に、ある時点でテーブル名を指定する必要があります。その時点でテーブル名を保存します。

必要に応じて、さまざまな方法でこれを行うことができます。

  1. それをmysqlテーブルに保存します(たとえば、1列のみのlast_updated_table)
  2. 変数に保存します(同じリクエストでのみ必要な場合)
  3. セッションに保存します(私はこれを選択しません)
于 2013-04-11T13:06:55.257 に答える