3

データベースへの挿入があるたびにそのレコードの ID 番号を起動する mysql トリガーを設定することは可能ですか? PHP を使用してそれをキャプチャするにはどうすればよいですか?

4

4 に答える 4

3

あなたの質問を完全に理解していない限り、これにはトリガーは必要ありません。データベースドライバーの「最後に挿入された ID」機能を使用するだけです。

PHP で基本的な mysql ドライバーを使用する例を次に示します。

<?php

$db = mysql_connect( 'localhost', 'user', 'pass' );

$result = mysql_query( "insert into table (col1, col2) values ('foo', 'bar')", $db );

$lastId = mysql_insert_id();

これは、ID を取得する接続安全な方法です。

于 2009-02-12T20:18:15.290 に答える
2

前の回答で説明したように、ID を返すためにトリガーを使用する必要はありません。[ドキュメント][1]で説明されているように、mysql_insert_id() コマンドを使用できます。

ただし、トリガーで新しい挿入 ID を使用する必要がある場合は、次のように NEW.[identity_column_name] を使用します。

CREATE TABLE temp (
    temp_id int auto_increment,
    value varchar(10),
    PRIMARY_KEY(temp_id)
);

CREATE TRIGGER after_insert_temp AFTER INSERT ON temp
FOR EACH ROW 
BEGIN
    DECLARE @identity;
    SET @identity = NEW.temp_id;
    -- do something with @identity
END
于 2009-02-12T20:32:14.743 に答える
1

あなたが何を求めているのかよくわかりません。データベースに行を挿入し、割り当てられた ID も取得したいですか? だったらこうする

printf("最後に挿入されたレコードの ID は %d\n", mysql_insert_id());

于 2009-02-12T20:15:06.873 に答える
0

やろうとしていることを達成するためのトリガーは必要ありません。

PHP を呼び出すだけmysql_insert_idで、最後に実行された INSERT クエリから生成された ID が返されます。

ここで説明: http://us2.php.net/manual/en/function.mysql-insert-id.php

于 2009-02-12T20:20:02.773 に答える