1
I don’t understand why you made such a mistake Unknown column in three triggers of the same table, as it always points to the keys and they in my view are correct.
The error comes from the cd_sale key of the sale table
The image of the tables itens_venda
and venda
described in triggers that are stored in itens_venda
sane:
Are three triggers:
- The error of Trigger
itens_venda_AFTER_INSERT
is Error Code: 1054. Unknown column 'cd_venda' in 'NEW'
DELIMITER $
CREATE TRIGGER itens_venda_AFTER_INSERT
AFTER INSERT ON itens_venda
FOR EACH ROW
BEGIN
/* atualiza o valor total da venda ao adicionar o produto da compra */
UPDATE venda SET valor_total = valor_total + (NEW.valor_item * NEW.quantidade_item)
WHERE cd_venda = NEW.cd_venda; -- Daqui vem o erro
END $
DELIMITER ;
- The error of Trigger
itens_venda_BEFORE_UPDATE
is Error Code: 1054. Unknown column 'cd_venda' in 'OLD'
DELIMITER $
CREATE TRIGGER itens_venda_BEFORE_UPDATE
BEFORE UPDATE
ON itens_venda
FOR EACH ROW
BEGIN
/* Se for realizado a diminuição da quantidade de item da venda será registrado na tabela de devolução.*/
IF OLD.status = 'Adicionado' THEN
IF NEW.quantidade_item < OLD.quantidade_item THEN
/* Atualiza o valor da venda quando diminui a quantidade do item */
UPDATE venda SET valor_total = valor_total - (OLD.valor_item * (OLD.quantidade_item -
NEW.quantidade_item))
WHERE cd_venda = OLD.cd_venda; -- Daqui vem o erro
END IF;
END IF;
END$
DELIMITER ;
- The error of Trigger
itens_venda_AFTER_UPDATE
is Error Code: 1054. Unknown column 'cd_venda' in 'OLD'
DELIMITER $
CREATE TRIGGER itens_venda_AFTER_UPDATE
AFTER UPDATE
ON itens_venda
FOR EACH ROW
BEGIN
/* Atualiza o valor total se o produto for cancelado */
IF NEW.status = 'Cancelado' THEN
UPDATE venda SET valor_total = valor_total - (OLD.valor_item * OLD.quantidade_item)
WHERE cd_venda = OLD.cd_venda; -- Daqui vem o erro
END IF;
END$
DELIMITER ;
But the countryside
cd_venda
does not exist initens_venda
the nearest name is the fieldcd_itens_venda
.– Augusto Vasques
@Augustovasques I’ll look here if that’s right.
– Unpressum
Where is
WHERE cd_venda = OLD.cd_venda
change toWHERE cd_venda = OLD.cd_itens_venda
– Augusto Vasques
@Augustovasques worked, thank you.
– Unpressum
@Augustovasques answers there question for me marks your answer as the best.
– Unpressum
WHERE cd_venda = OLD.cd_itens_venda certo, the rest that owns NEW will be the same thing?
– Unpressum
Yes the same thing.
– Augusto Vasques
Type
WHERE cd_venda = NEW.cd_itens_venda
in the first two triggers?– Unpressum
If the field
cd_itens_venda
changed useNEW.cd_itens_venda
if no changeOLD.cd_itens_venda
– Augusto Vasques