テーブルtbtable
には次のカラムが含まれています。 MySQLの更新ローIDをOUTパラメータに設定する
tbtable
にエントリを作成または更新する手順は次のとおりです。
今は更新が発生したときにエントリのIDを取得する方法がありません。どのスクリプトに私の現在のcreateOrUpdateメソッドを変更して、更新が行われたときにidを取得できるようにする必要がありますか?
他の同様の質問を確認しましたが、OUT
というパラメータがないため、私の場合は該当しません。
ありがとうございました。
EDIT:
BEGIN
IF EXISTS (SELECT*FROM `tbtable` WHERE `pid` = this_pid AND `sid` = this_sid)
THEN
UPDATE `tbtable`
SET
`ri` = this_ri, `defaults` = this_defaults, `approved` = this_approved
WHERE `pid` = this_pid AND `sid` = this_sid;
SET id = `id` ;
ELSE
INSERT INTO `tbtable` (`pid`, `sid`, `ri`, `defaults`, `approved`)
VALUES (this_pid, this_sid, this_ri, this_defaults, this_approved);
SET id = LAST_INSERT_ID();
END IF;
END
私もこのアプローチを試みたが、更新がある場合id
はNULLです。
スクリプトを編集して表示してもらえますか? –
が完了しました。今はいいですか? –
いいえこれは、OUTパラメーターの値を設定しません。結果セットが返されます。 (これは、プロシージャ内の他の場所では参照されていない@idというユーザ定義変数の現在の値を返します。 – spencer7593