Mysql
 sql >> база данни >  >> RDS >> Mysql

MySql Trigger Update изберете сума след вмъкване

Опитайте

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;

Ето го SQLFiddle демонстрация.

АКТУАЛИЗАЦИЯ :Тъй като тригерите не са достъпни за вас, опитайте да обвиете INSERT и UPDATE в съхранена процедура като тази

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 ;

И след това го използвайте

CALL AddTransaction(1, 10.50);

Ето го SQLFiddle демонстрация за този сценарий.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP, MYSQL вложени заявки

  2. PDO::__construct():Сървърът изпрати набор от знаци (255), неизвестен на клиента. Моля, докладвайте на разработчиците

  3. Как да търся наклонена черта (\) в MySQL? и защо избягването (\) не се изисква за къде (=), а за Like се изисква?

  4. грешен брой в заявката

  5. Използване на MySQL тригери за регистриране на всички промени в таблицата във вторична таблица