sql >> データベース >  >> RDS >> Mysql

mysqlの不明なテーブルをトリガーします

    質問へのコメントで言われたことを以下に示しました:

    CREATE TRIGGER some_trigger AFTER UPDATE ON table_a
        FOR EACH ROW BEGIN
        DECLARE tname VARCHAR(20);
        IF (NEW.field_offer=1) THEN
           UPDATE `table_b` 
           SET STOCK = CASE NEW.field_state 
                       WHEN 0 THEN STOCK - 1 
                       WHEN 1 THEN STOCK + 1 
                       ELSE STOCK 
                       END
           WHERE ID=NEW.ref_field
           ;
        ELSEIF (NEW.field_offer=0) THEN
           UPDATE `table_c` 
           SET STOCK = CASE NEW.field_state 
                       WHEN 0 THEN STOCK - 1 
                       WHEN 1 THEN STOCK + 1 
                       ELSE STOCK 
                       END
           WHERE ID=NEW.ref_field
           ;
        END IF;
        ...
    

    UPDATE ... JOINから更新を変更したことに注意してください MySQLでは、トリガーされたテーブルのデータを変更することはできません。あなたが実際にtable_aを更新していなかった間、JOINはMySQLが反対するのに十分だったかもしれません...それと結合はtable_b/cのすべての行を更新しました table_aで一致した 、table_aだけではありません トリガーの値または行に関連する行。




    1. SequelizeConnectionRefusedError:接続ECONNREFUSED 127.0.0.1:3306

    2. DOUBLEタイプのMySQLの最小/最大

    3. oracle pl/sqlの内部プロシージャから外部プロシージャにカーソルを戻す

    4. 電子メールによる検証リンク