MariaDBに変数を宣言構文エラー

Nimetski:

私は、次のクエリに問題があります。

START TRANSACTION;
INSERT INTO posts
(
-- not relevant
)
VALUES
(
-- insert works as intended
);
COMMIT WORK AND CHAIN;

DECLARE @insertId INT; -- this is where i get the syntax error
SET @insertId = LAST_INSERT_ID();

UPDATE posts
SET guid = CONCAT('foo.bar?p=', @insertId)
WHERE id = @insertId;

-- continue to work with the variable
INSERT INTO postmeta(post_id, key, value)
VALUES
(@insertId, ..., ...),
(@insertId, ..., ...),
(@insertId, ..., ...),
(@insertId, ..., ...);
COMMIT WORK;

基本的に私は、行、および自動インクリメントIDを使用して、それを更新する必要INSERT すぐに挿入した後に(必ず私は、関数LAST_INSERT_IDのうち、正しい値を得ることを確認します)。そして、私はまた、自動インクリメントIDを使用して、他のテーブルを入力する必要があります。このユースケースでは、私は変数に値を格納する必要があることを、考え出しました。なぜ私は、次のエラーメッセージを得るのですか?「あなたは、あなたのSQL構文でエラーが発生している。マニュアルを確認し、その近くに使用する権利構文についてはMariaDBサーバーのバージョンに対応する『DECLARE @insertId INT; SET @insertId = LAST_INSERT_ID();』1"行目に私はプロシージャーまたはユーザー定義関数を作成していないという問題がありますか?

dylenv:

私はクイック検索を行なったし、MariaDBのウェブサイト(にこれを見つけたhttps://mariadb.com/kb/en/user-defined-variables/):

「ユーザー定義変数の型を宣言することができないので、それらのタイプを強制する唯一の方法は、)(CAST()またはCONVERTを使用しています」

私はそれらを宣言せずに変数を作る自分のサイト上の例があるので、解決策はただdeclare文を削除していると思います。

私はMariaDBと本当に慣れていないよ、この作品を願っています!

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=23902&siteId=1