sql >> Database teknologi >  >> RDS >> Mysql

Opdater en anden tabel efter indsættelse ved hjælp af en trigger?

Hvis du ikke forventer enorme mængder data, brug en visning eller en lagret procedure til at beregne på farten og returnere den faktiske mængde. Det kan spare dig for en masse hovedpine i det lange løb.

Din visning (faktisk visninger) kan se ud som

CREATE VIEW vw_table2_sum AS
SELECT product, SUM(issued_qty) qty
  FROM Table2
 GROUP BY product;

CREATE VIEW vw_table1 AS
SELECT t.id, t.product, t.qty - COALESCE(v.qty, 0) qty
  FROM Table1 t LEFT JOIN vw_table2_sum v
    ON t.product = v.product;

Når vi gør

SELECT * FROM vw_table1;

får

| ID |  PRODUCT | QTY |
-----------------------
|  1 |    mouse |   8 | -- the quantity is current
|  2 | keyboard |  15 |
|  3 |  monitor |   8 |

Her er SQLFiddle demo

Hvis du nu af en eller anden grund ønsker at administrere din lagermængde med en trigger, kan det se sådan ud

CREATE TRIGGER tg_ai_table2
AFTER INSERT ON table2
FOR EACH ROW
  UPDATE Table1
     SET qty = qty - NEW.issued_qty
   WHERE product = NEW.product;

Her er SQLFiddle demo




  1. En Flask-SQLAlchemy-opdatering skaber en ny rekord i MySQL

  2. Hvordan gemmer man eurosymbolet i mysql-databasen?

  3. ORA-12516, TNS:listener kunne ikke finde tilgængelig handler

  4. INDLÆS DATAINFIL på fjernmaskine