私は、私のチームが変数と基本スクリプトを使ってルーチンのDBをいくつか変更できるプロセスを設定しようとしています。私は多くの操作の最初の段階にあり、実行することさえできません。考え方は、スクリプトの先頭に変数を割り当て、test
またはprod
モードでスクリプトを実行するかどうかを指定することです。MySQLのトランザクションと変数に関する問題
test
は変更を模倣し、何が起こったのかを表示し、トランザクションをロールバックする必要があります。prod
は実際にトランザクションをコミットし、更新された行を表示します。
私はこれらの行を個別に実行すると機能しますが、構文エラーが表示され続けます。私はこれをデバッグするのが大好きですが、誰かがこの問題に対するより良い解決策を持っているならば、私はそれを聞いて広く読んでいます。
ここで始まりのコードはありがとうございます!
#ADD A NEW QUESTION CATEGORY
SET @new_category_name = 'NEW CATEGORY NAME HERE';
SET @prod_or_test = 'PROD';
START TRANSACTION;
#SET IT'S SORT_ORDER TO BE AT THE END OF THE LIST
SET @last_sort_order = ((SELECT MAX(`sort_order`) FROM question_categories)+1);
#INSERT THE NEW ROW
INSERT INTO question_categories (name, sort_order) VALUES (@new_category_name, @last_sort_order);
IF (@prod_or_test = 'PROD') THEN
COMMIT;
SELECT * FROM question_categories WHERE name = @new_category_name;
ELSE
ROLLBACK;
END IF;
エラーメッセージを含むように更新:
[ERROR in query 6] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (@prod_or_test = 'PROD') THEN
COMMIT' at line 1
[ERROR in query 8] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ELSE
ROLLBACK' at line 1
[ERROR in query 9] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END IF' at line 1
エラーメッセージを投稿してくださいすることができますおかげで – maSTAShuFu
良いコールああ、私はポストを更新しましたが - –