3

是否可以设置一个 mysql 触发器,当数据库中有插入时,它会触发该记录的 id 号,以及如何使用 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

如前面的答案所述,您不需要使用触发器来返回身份。您可以使用 [文档][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

您不需要触发器来完成您正在尝试做的事情。

简单地调用 PHPmysql_insert_id将返回从最后执行的 INSERT 查询生成的 ID。

此处描述:http: //us2.php.net/manual/en/function.mysql-insert-id.php

于 2009-02-12T20:20:02.773 回答