1
が存在する場合、私は以下のようにプロシージャを格納していますMySQLのストアドプロシージャのチェック表は、その後アルター構文エラー
DROP PROCEDURE IF EXISTS TEST;
CREATE PROCEDURE TEST()
BEGIN
IF (SELECT count(*) FROM (SELECT table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name LIKE 'User') A) > 0 THEN
ALTER TABLE User DROP FOREIGN KEY FK_forkey
END IF;
END
SELECT ....
を私はEND IFで構文エラーがあります。私はこれを解決するために多くの方法を試みてきましたが、それまでは成功していませんでした。デリミタを// DROP PROCEDUREの後とENDの後に追加すると、区切り文字(区切り文字はこの位置で有効な入力ではありません)でエラーが発生します。私が見逃したこと/どうして私はそれを間違ったのですか?ご回答いただきありがとうございます。
以上更新
DROP PROCEDURE IF EXISTS TEST;
DELIMITER //
CREATE PROCEDURE TEST()
BEGIN
IF EXISTS(SELECT table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name LIKE 'User')
THEN
ALTER TABLE User DROP FOREIGN KEY FK_AccountID;
END IF;
END //
DELIMITER;
を更新しましたが、私の新しい変化であり、それは最後の区切り文字でエラーを報告:Delimiter is not valid input at this position
'; 'を' ALTER TABLEユーザフォークキーFK_forkey'行の後に置いていましたか? – Evgeny
こんにちは@Evgeny、ご意見ありがとうございます。私は私の質問を更新しました。上記をご覧ください。 – Leo
'delimiter'と'; 'の間にスペースを入れなければなりません – Solarflare