0

我正在尝试获取所有最后插入的行的 ID。为此,我创建了一个触发器,如下所示;

CREATE TRIGGER mytable_insert
AFTER INSERT ON mytable
FOR EACH ROW SET @insertIDs = CONCAT_WS(',', @insertIDs, NEW.id)

然后在程序部分的代码如下

$sql="INSERT INTO `table` ({columns}) VALUES({values})";
$command=Yii::app()->db->createCommand($sql);
if($command->execute()){
    $sql='SELECT @insertIDs AS "Inserted_IDs"';
    $command=Yii::app()->db->createCommand($sql);
    $rows=$command->queryAll();
    var_dump($rows);
}

在这里我得到了一些 ID....但问题是我在数据库中找不到那些行...不知道是什么错误.....需要帮助....

4

2 回答 2

0

@insertIDs一个用户变量,在当前会话中可见;因此,您可以在其他 MySQL 会话中创建具有相同名称的不同变量。

看起来您的代码使用了多个会话,因此显示出意外的结果。检查您的代码是否使用一个会话(我的意思是 MySQL 连接)来执行 INSERT 和 SELECT 查询。

此外,您可以在 MySQL 命令行控制台中尝试此代码,它必须有效。

于 2013-05-28T10:51:05.870 回答
0

你的sql语法是什么?

SELECT @insertIDs AS "Inserted_IDs"

“从”哪里来?(从 T 中选择 *;)

于 2013-05-28T07:34:03.707 回答