ERRO Subquery returns more than 1 row MYSQL [RESOLVIDO]

Oi gente, estou precisando de uma ajudinha. Seguinte, quando eu realizo uma venda, , um terreno altera seu status para ‘vendido’ , fiz o seguinte trigger:

CREATE TRIGGER inclusaovenda AFTER INSERT
ON venda
FOR each row
	UPDATE lote SET situacao = 'Vendido'
WHERE codigo = (select codigo_lote from venda);

Quando eu faço um insert em venda, ele funciona perfeitamente, mas quando vou fazer uma segunda inserção , ele da a mensagem de Subquery returns more than 1 row

Desde ja , obrigada

Essa é sua query:
UPDATE lote SET situacao = 'Vendido' WHERE codigo = (select codigo_lote from venda);

Essa parte é sua subquery:
(select codigo_lote from venda)

Quando existe duas vendas na tabela “venda”, esse select retornará duas linhas, dois códigos. E daí o seu update nao sabe qual dos códigos usar no where e dá a mensagem de erro que tá vendo.

Provavelmente, vai depender do banco, você está querendo algo como:
(select codigo_lote from new.venda)

Esse new na frente garante que você só tá falando do registro para qual essa trigger está sendo executada. Consulte na documentaçao do banco de dados que está usando qual a sintaxe correta para isso.

Edit: Ah, como um conselho geral, evite colocar regra de negócio em trigger. Pode parecer mais trabalho e menos elegante colocar esse código na aplicaçao, mas isso facilita a manutençao. Trigger costumam ficar escondidas no banco de dados e as pessoas esquecem que elas estao ali.

Muito obrigada AbelBueno, com o new.venda ele nao deu certo, mas to procurando o que pode substituir. E obrigada pelo conselho, esse é um projeto pequeno da faculdade, em um que posso fazer futuramente vou pensar nisso antes, pode deixar !!

Coonsegui, UPDATE lote SET situacao = 'Vendido’
WHERE codigo IN (select codigo_lote from venda); . Muito obrigada pela ajuda

@gm-palomo, acho que nao é examente isso.

Agora toda vez que você cria uma venda, você atualiza todos os lotes com venda para Vendido de novo.
Isso pode nao fazer diferença se essa for a situaçao final, mas é no mínimo um desperdício ficar atualizando esse campo novamente.

Que banco está utilizando?