あまりにも長い間これと戦ってきたので、助けを求めるためにここに来ました...
次のことを行いたいMySQLストアドプロシージャがあります。
特定のレコードの「id」と「username」を指定
- id がテーブルに存在しない場合は、レコードを作成します
- それ以外の場合、ID が存在し、ユーザー名が存在するものと同じでない場合は、レコードを更新します
- 他に何もしない
私は次のことを試しました:
BEGIN
DECLARE doCreate INT;
DECLARE doUpdate INT;
SELECT COUNT(*) INTO doCreate FROM app_user WHERE id=1;
IF (doCreate > 0) THEN
SELECT COUNT(*) INTO doUpdate FROM app_user WHERE id=1 AND username='other';
END IF
IF(doCreate = 0) THEN ---SYNTAX ERROR ON THIS LINE---
SELECT 'CREATE';
ELSE IF(doUpdate = 0) THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END IF
END
if-elseif-else ブロックを case ステートメントに置き換えてみましたが、同じ結果が得られました...
CASE ---ERROR ON THIS LINE---
WHEN doCreate = 0 THEN
SELECT 'CREATE';
WHEN doUpdate = 0 THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END
- 最初の END IF の後に来ると構文エラーが発生するように見えるので、それが最初に発生する問題です...
何か助けていただければ幸いです - これを行うためのより良い方法があると確信しています。