データベースへの挿入があるたびにそのレコードの ID 番号を起動する mysql トリガーを設定することは可能ですか? PHP を使用してそれをキャプチャするにはどうすればよいですか?
4 に答える
あなたの質問を完全に理解していない限り、これにはトリガーは必要ありません。データベースドライバーの「最後に挿入された 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 を取得する接続安全な方法です。
前の回答で説明したように、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
あなたが何を求めているのかよくわかりません。データベースに行を挿入し、割り当てられた ID も取得したいですか? だったらこうする
printf("最後に挿入されたレコードの ID は %d\n", mysql_insert_id());
やろうとしていることを達成するためのトリガーは必要ありません。
PHP を呼び出すだけmysql_insert_id
で、最後に実行された INSERT クエリから生成された ID が返されます。
ここで説明: http://us2.php.net/manual/en/function.mysql-insert-id.php