Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro 1222 com comando INSERT

Boa tarde!

No momento de fazer os inserts, após ter feito o TRIGGER, ocorre o seguinte erro:

Error Code: 1222. The used SELECT statements have a different number of columns

O comando usado para criar o gatilho é este:

DELIMITER //
CREATE TRIGGER TG_CALCULA_FATURAMENTO_INSERT AFTER INSERT ON ITENS_NOTAS
FOR EACH ROW BEGIN
    DELETE FROM TAB_FATURAMENTO;
    INSERT INTO TAB_FATURAMENTO
    SELECT A.DATA_VENDA, 
    SUM(B.QUANTIDADE * B.PRECO) AS TOTAL_VENDA
    FROM NOTAS A 
    INNER JOIN ITENS_NOTAS B ON A.NUMERO = B.NUMERO
    GROUP BY A.DATA_VENDA;
END //

Os comandos dos inserts são esses:

INSERT INTO NOTAS (NUMERO, DATA_VENDA, CPF, MATRICULA, IMPOSTO)
VALUES ('0100', '2019-05-08','1471156710', '235', 0.10);
INSERT INTO ITENS_NOTAS (NUMERO, CODIGO_PRODUTO, QUANTIDADE, PRECO)
VALUES ('0100', '1000889', 100, 10);
INSERT INTO ITENS_NOTAS (NUMERO, CODIGO_PRODUTO, QUANTIDADE, PRECO)
VALUES ('0100', '1002334', 100, 10);

Gostaria de saber o se estou fazendo algo errado e como corrijo o problema.

Obrigado pela atenção!

2 respostas

Olá Guilherme, tudo bem?

O erro retornado informa que o SELECT usado têm um número diferente de colunas, então, você poderia verificar as colunas da sua tabela TAB_FATURAMENTO? Já que a sua trigger aparentemente está de acordo com a do instrutor, o problema pode ser diretamente na tabela.

Aguardo o seu retorno!

solução!

Oi Danielle, tudo bem?

Eu repeti exatamente o código do instrutor e infelizmente não consegui achar o erro.

Para garantir eu fiz um DROP TABLE TAB_FATURAMENTO a criei novamente assim:

CREATE TABLE TAB_FATURAMENTO 
(DATA_VENDA DATE NULL, TOTAL_VENDA FLOAT);

Mesmo assim continuo tendo esse erro.

Testei fazer um trigger com outro banco de dados e o mesmo erro acontece.

O que pode estar causando esse erro sendo que nada está em desacordo?

*Edit: O problema foi solucionado com a exclusão e recriação do gatilho e da tabela, mesmo que não tenha entendido o motivo.