2

重複の可能性:
mysqlがトリガーでlast_insert_id()を取得する

MySQLにテーブルを起動させています(TRIGGER)。AFTER INSERT ONmy_table

PRIMARY_KEY以下を使用して、によって影響を受ける行のTRIGGERを変数に格納したいと思います。

SET  @user_id =  LAST_INSERT_ID();

これは、このstackoverflowリンクによって支えられています。そして、働いているようです。

ただし、値をとして格納するたびに0

このstackoverflowリンクから、これmy_tableはに設定されているという事実によるものだと思いますAUTO_INCREMENT

SET  @user_id =  LAST_INSERT_ID();

これを克服するためのベストプラクティスは何ですか?

4

1 に答える 1

2

LAST_INSERT_ID()関数は、自動生成されたID値のみを返します。ID自体を生成した場合、LAST_INSERT_ID()はそれを返しません。

また、トリガーは別のセッションで機能します。ただし、LAST_INSERT_ID()は、現在のセッション(新しいIDが挿入されたセッションなど)でのみ機能します。

-- NULL means that ID will be generated by server
INSERT INTO table1(id) VALUES(NULL);
SELECT LAST_INSERT_ID();
> 1
于 2012-10-30T15:36:15.323 に答える