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

あなたのSQL構文は何ですか?

SELECT @insertIDs AS "Inserted_IDs"

どこから" ?(SELECT * FROM T;)

于 2013-05-28T07:34:03.707 に答える
0

@insertIDsユーザー変数で、現在のセッションで表示されます。そのため、他の MySQL セッションで同じ名前の異なる変数を作成できます。

コードが複数のセッションを使用しているように見えるため、予期しない結果が表示されます。コードが 1 つのセッション (つまり MySQL 接続) を使用して INSERT および SELECT クエリを実行していることを確認します。

また、MySQL コマンドライン コンソールでこのコードを試すこともできます。動作するはずです。

于 2013-05-28T10:51:05.870 に答える