sql >> Database >  >> RDS >> Mysql

MySql Trigger Update selecteer som na invoegen

Probeer

CREATE TRIGGER NewTrigger 
AFTER INSERT ON Transactions
FOR EACH ROW
UPDATE Accounts a
   SET a.AccountBalance = 
    (SELECT SUM(TransactionAmount) 
       FROM Transactions
      WHERE AccountID = a.AccountID)
 WHERE a.AccountID = NEW.AccountID;

Hier is SQLFiddle demo.

UPDATE :Aangezien er geen triggers voor u beschikbaar zijn, probeert u INSERT en UPDATE in een opgeslagen procedure als deze

DELIMITER $$
CREATE PROCEDURE AddTransaction(IN aid INT, amount DECIMAL(11, 2)) 
BEGIN
  START TRANSACTION;
  INSERT INTO Transactions (AccountID, TransactionAmount)
  VALUES (aid, amount);
  UPDATE Accounts a
     SET a.AccountBalance = 
      (SELECT SUM(TransactionAmount) 
         FROM Transactions
        WHERE AccountID = a.AccountID)
   WHERE a.AccountID = aid;
   COMMIT;
END $$
DELIMITER ;

En gebruik het dan

CALL AddTransaction(1, 10.50);

Hier is SQLFiddle demo voor dat scenario.




  1. Zoek de bron van de zoekopdracht via pgbouncer

  2. Regex101 versus Oracle Regex

  3. Hoe te fietsen met een array in MySQL?

  4. De laatst ingevoegde id krijgen van MySQL in Yii