Update de saldo anterior
Galera do iMasters,
Estou montando uma tabela de fluxo de caixa, se alguém puder ajudar numa dúvida agradeço.
Tenho a tabela fluxo de caixa.
DROP TABLE IF EXISTS `db_brino`.`tb_fxc`;
CREATE TABLE `db_brino`.`tb_fxc` (
`id_fxc` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cont_id` int(1) unsigned NOT NULL DEFAULT '0',
`data_fxc` date NOT NULL,
`desc_fxc` varchar(45) NOT NULL,
`valor_fxc` decimal(10,2) NOT NULL,
`tipo_fxc` tinyint(1) unsigned NOT NULL DEFAULT '0',
`saldo_fxc` decimal(10,2) NOT NULL,
PRIMARY KEY (`id_fxc`),
KEY `FK_cont_has_contas_id` (`cont_id`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Segue o exemplo da tabela:
INSERT INTO tb_fxc VALUES (null, 1, curdate(), 'Saldo inicial', 5000, 0, 5000);
INSERT INTO tb_fxc VALUES (null, 2, curdate(), 'Compra', 300, 1, 300);
Resultado:
id conta data desc valor tipo saldo
1 1 ---- Saldo inicial 5000,00 0 5000,00
2 2 ---- Compra 300,00 1 300,00
Minha dúvida esta no seguinte, a cada insert quero que uma Trigger faça o seguinte: de acordo com o lançamento, será somado ou subtraído do saldo anterior no saldo atual.
Esperado:
id conta data desc valor tipo saldo
1 1 ---- Saldo inicial 5000,00 0 5000,00
2 2 ---- Compra 300,00 1 4700,00
Saldo atual = Saldo anterior +ou- Saldo atual.
UPDATE tb_fxc
SET saldo_fxc = saldo_fxc +ou- (SELECT saldo_fxc FROM tb_fxc WHERE id_fxc = (SELECT max(id_fxc-1) FROM tb_fxc))
WHERE id_fxc = (SELECT max(id_fxc-1) FROM tb_fxc)
No caso o update que estou fazendo fica apontando o seguinte erro:
You can't specify target table 'tb_fxc' for update in FROM clauseDiscussão (10)
Carregando comentários...