Autor Tópico: ERROR 1364: 1364: Field 'sequencia' doesn't have a default value SQL Statement:  (Lida 125 vezes)

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 2367
  • Focalize as oportunidades e não os obstáculos.
    • Simão & Bühler Ltda
    • Email
O nosso amigo Leão não está conseguindo postar no fórum e pediu que eu postasse para ele.
Se alguém puder responder? Cito:

"Objetivo tenho uma tabela mysql, chamada contratos_parcelas, e preciso gerar
uma triggers, para verificar a quantidade de registros conforme o campo CONTRATO
VEJA ABAIXO:

CREATE DEFINER=`root`@`localhost` TRIGGER
`veiculo2016`.`contratos_parcelas_BEFORE_INSERT` before INSERT ON
`contratos_parcelas` FOR EACH ROW
begin
 UPDATE contratos_parcelas
 set new.sequencia = (select max(sequencia) + 1 from contratos_parcelas
 where contrato = new.contrato);
end

//o erro, o campo sequencia não estar na INSERT INTO

ERROR 1364: 1364: Field 'sequencia' doesn't have a default value
SQL Statement:
INSERT INTO `veiculo2016`.`contratos_parcelas` (`contrato`, `cod_cobrador`,

`vencimento`, `data_recto`, `valor_parcela`, `juro_diario`, `valor_juro`,

`valor_recebido`, `valor_total`, `Complemento`) VALUES ('51', '5', '2019-01-

01', '2019-01-01', '54', '45', '57', '76', '76', '74')

O campo sequencia, não consta na INSERT INTO

esse campo SEQUENCIA, não é primaria, int(6)

Tem alguma sugestão?"
« Última modificação: Janeiro 18, 2019, 11:55:21 am por Alexandre Pereira Bühler »
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada. Temos servidores dedicados.
Grupo Telegram -> https://t.me/scriptcasebr
Usuário Debian, Slackware e Rwindows 10 (o videogame)

Kleyber

  • Expert
  • *****
  • Mensagens: 3163
    • TK Informídia
Re:ERROR 1364: 1364: Field 'sequencia' doesn't have a default value SQL Statement:
« Responder #1 Online: Janeiro 18, 2019, 12:48:24 pm »
Na definição da tabela contratos_parcelas, defina o default do campo sequencia como 0 (zero). Isso deve resolver.

Agora a minha dúvida é: Por que não usar uma chave primária nessa tabela, ao invés de usar um campo que não seja chave primária e ficar somando + 1 a ele?
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão

Leao novo

  • Novato
  • *
  • Mensagens: 4
    • Email
Re:ERROR 1364: 1364: Field 'sequencia' doesn't have a default value SQL Statement:
« Responder #2 Online: Janeiro 18, 2019, 03:32:43 pm »
Olá Kleyber, informei zero como padrão e ocorre mesma mensagem de erro.
Porque usando assim: Porque o campo sequencia é exatamente para cada contrato gerar sequencia propria, para saber quantas parcelas tem aquele contrato. Quero colocar como triggers para não haver erro.

Obrigado, se alguém tem uma ideia de já agradeço.

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 2367
  • Focalize as oportunidades e não os obstáculos.
    • Simão & Bühler Ltda
    • Email
Re:ERROR 1364: 1364: Field 'sequencia' doesn't have a default value SQL Statement:
« Responder #3 Online: Janeiro 18, 2019, 04:13:58 pm »
Que bom que conseguiu voltar a postar Leão.
"Porque usando assim: Porque o campo sequencia é exatamente para cada contrato gerar sequencia propria, para saber quantas parcelas tem aquele contrato. Quero colocar como triggers para não haver erro. "
Então acho que terá que ter algo, não?
Outra coisa já viu se o campo está como not null?
Pois se não é passado nada e o campo está como not null não vai dar certo mesmo
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada. Temos servidores dedicados.
Grupo Telegram -> https://t.me/scriptcasebr
Usuário Debian, Slackware e Rwindows 10 (o videogame)

Leao novo

  • Novato
  • *
  • Mensagens: 4
    • Email
Re:ERROR 1364: 1364: Field 'sequencia' doesn't have a default value SQL Statement:
« Responder #4 Online: Janeiro 18, 2019, 05:19:23 pm »
Olá Alexandre, já coloque em ambos os casos e mesmos erro, o mesmo estar acima


Leao novo

  • Novato
  • *
  • Mensagens: 4
    • Email
Re:ERROR 1364: 1364: Field 'sequencia' doesn't have a default value SQL Statement:
« Responder #5 Online: Janeiro 19, 2019, 10:00:51 am »
Olá, alguém pode dar alguma sugestão...

Aguardo e obrigado,

Leão

Kleyber

  • Expert
  • *****
  • Mensagens: 3163
    • TK Informídia
Re:ERROR 1364: 1364: Field 'sequencia' doesn't have a default value SQL Statement:
« Responder #6 Online: Janeiro 19, 2019, 12:16:18 pm »
Você pode postar aqui a definição dessa tabela?
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão

Leao novo

  • Novato
  • *
  • Mensagens: 4
    • Email
(Resolvido): Field 'sequencia' doesn't have a default value SQL Statement:
« Responder #7 Online: Janeiro 19, 2019, 12:20:06 pm »
Olá a todos achei isso na internet e deu certo:

CREATE DEFINER=`root`@`localhost` TRIGGER `veiculo2016`.`contratos_parcelas_BEFORE_INSERT` before INSERT ON `contratos_parcelas` FOR EACH ROW
begin

select max(sequencia) from contratos_parcelas
into @Maxsequencia;
set new.sequencia = ifnull(@Maxsequencia,1)+1;
end

=================| achei isso aqui abaixo |========================
CREATE TABLE a
(
Id int(10) unsigned NOT NULL AUTO_INCREMENT,
A int(11) DEFAULT NULL,
CalcUniqId int(11) DEFAULT NULL,
PRIMARY KEY (Id)     
) ENGINE=InnoDB;

CREATE TRIGGER a_before_ins_tr before INSERT on a
FOR EACH ROW
BEGIN
  select Max(CalcUniqId) from A into @MaxCalcUniqId;
  set new.CalcUniqId=IfNull(@MaxCalcUniqId,1)+1;
END $

Obrigado a todos

Leão
O nosso amigo Leão não está conseguindo postar no fórum e pediu que eu postasse para ele.
Se alguém puder responder? Cito:

"Objetivo tenho uma tabela mysql, chamada contratos_parcelas, e preciso gerar
uma triggers, para verificar a quantidade de registros conforme o campo CONTRATO
VEJA ABAIXO:

CREATE DEFINER=`root`@`localhost` TRIGGER
`veiculo2016`.`contratos_parcelas_BEFORE_INSERT` before INSERT ON
`contratos_parcelas` FOR EACH ROW
begin
 UPDATE contratos_parcelas
 set new.sequencia = (select max(sequencia) + 1 from contratos_parcelas
 where contrato = new.contrato);
end

//o erro, o campo sequencia não estar na INSERT INTO

ERROR 1364: 1364: Field 'sequencia' doesn't have a default value
SQL Statement:
INSERT INTO `veiculo2016`.`contratos_parcelas` (`contrato`, `cod_cobrador`,

`vencimento`, `data_recto`, `valor_parcela`, `juro_diario`, `valor_juro`,

`valor_recebido`, `valor_total`, `Complemento`) VALUES ('51', '5', '2019-01-

01', '2019-01-01', '54', '45', '57', '76', '76', '74')

O campo sequencia, não consta na INSERT INTO

esse campo SEQUENCIA, não é primaria, int(6)

Tem alguma sugestão?"
« Última modificação: Janeiro 19, 2019, 12:22:57 pm por Leao novo »