在MySql中创建触发器时删除了新插入的行

时间:2013-05-28 07:01:46

标签: php mysql triggers yii

我正在尝试获取所有最后插入的行的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 ....但问题是我在数据库中找不到那些行...不知道是什么错误.....需要帮助....

2 个答案:

答案 0 :(得分:0)

你的sql语法是什么?

SELECT @insertIDs AS "Inserted_IDs"

“来自”? (SELECT * FROM T;)

答案 1 :(得分:0)

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

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

此外,您可以在MySQL命令行控制台中尝试此代码,它必须正常工作。