MariaDBはUPDATEを実行して、条件が真の場合、DELETE

larrybg:

私は、ノードJSアプリを書いて実行する必要があるんだUPDATEDELETE、同じ文でクエリが、DELETE別のテーブルにのみ条件が一定の状態に等しい場合に実行されなければなりません。私は私のシンテックスについてはよく分からない...ここでは、これまで私が持っているものです。

UPDATE vm_log SET user_id_fk = (SELECT user_id FROM users WHERE username = ?), vm_state = ? WHERE vm_id = ?;
SET @vmState = ?;
IF @vmState = 'PERMANENT' THEN
DELETE FROM vm_ext_tracking WHERE vm_fk = ?;
END IF

どこ?PARAMATERSとして供給されています。たとえばusername = 'someUser'vm_state = 'ACTIVE'またはPERMANENT、およびいくつかの番号をvm_id: vm_id = 4303UPDATE一部には、別途罰金と複雑さの層を追加するだけで必要に動作しますDELETE私は、エラーメッセージ:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IF @vmState = 'PERMANENT' THEN
DELETE FROM vm_ext_tracking WHERE vm_fk = 4303' at line 1
明菜:
UPDATE vm_log 
SET user_id_fk = ( SELECT user_id 
                   FROM users 
                   WHERE username = ?), 
    vm_state = ? 
WHERE vm_id = ?;

SET @vmState = ?;

DELETE 
FROM vm_ext_tracking 
WHERE vm_fk = ?
  AND @vmState = 'PERMANENT';

PS。@vmStateあなたが使用することができ、以下の(図示せず)のコードでそれに必要がない場合は、過剰です

UPDATE vm_log 
SET user_id_fk = ( SELECT user_id 
                   FROM users 
                   WHERE username = ?), 
    vm_state = ? 
WHERE vm_id = ?;

DELETE 
FROM vm_ext_tracking 
WHERE ? = 'PERMANENT'
  AND vm_fk = ?;

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=21585&siteId=1
おすすめ