Мне нужно создавать таблицы и триггеры для перемещения по банковскому счету. Я сделал несколько, но я застрял на балансе. У меня есть эти таблицы:
Здесь я просто вставляю информацию о транзакциях, в описании говорится, что я делаю (депозит 50, вывод 20 и т. Д. c.), D
означает депозит и W
означает снятие.
CREATE TABLE transactions
(account VARCHAR (10) NOT NULL,
date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP (),
description varchar (30) NOT NULL,
type ENUM ( 'D', 'W') NOT NULL,
value DECIMAL (7,2) NOT NULL
);
Я сделал триггер, который сообщает, какие пользователи совершают транзакции, и другую информацию. Позже я обнаружил проблему.
У меня есть эта таблица, называемая балансом, где мне нужен номер счета и текущий баланс.
CREATE TABLE balance
(Account VARCHAR (10) PRIMARY KEY,
balance DECIMAL (7,2) default 0 NOT NULL
);
Итак, я сделал следующий триггер, но он ничего не делает.
DELIMITER //
CREATE TRIGGER BALANCE_AI after insert on transactions for each row
begin
IF NEW.type = 'D' THEN UPDATE balance SET balance = balance + new.value WHERE account = new.account ;
ELSE UPDATE balance set balance = balance - new.value where account = new.account;
end if;
end //
DELIMITER ;
Я не вижу, как я могу обновить баланс на определенном счете или вставить и обновить баланс в балансе таблицы.
Я также пробовал так:
CREATE TRIGGER balance_AI after insert on transactions for each row
begin
UPDATE balance set balance = balance + new.valor where account = new.account;
insert into balance values (new.account,balance) ON DUPLICATE key update account = account ;
end //
DELIMITER ;