Criar TRIGGER MySQL com a Logica abaixo.
Bom dia.
Preciso criar um Trigger pra cada titulo que for repetido, o livro_cod incrementar mais 1, porem não podemos deixar como auto increment, se não ele fica igual o resumo_cod. Estrutura da tabela abaixo. Essa tabela não vai ser alterada (Apenas pelo trigger), apenas inserção. Aceito dicas para fazer de outra maneira.
Create table Resumos
(
resumo_cod int primary key AUTO_INCREMENT
, texto_resumo varchar (255) not null
, usuario_cod int not null -- referenciar usuarios
, tag varchar (15)
, titulo varchar (15) not null
, livro_cod int -- Criar Trigger
, produto_cod int not null -- referenciar produtos
, categoria varchar (6) not null -- referenciar legendas
, data_criacao datetime
, valido varchar (6) -- referenciar legendas -- Aceita campo 1 - 2 - 3 -- NEW
);
CREATE TRIGGER TRG_InsereCodLivro BEFORE INSERT
ON Resumos
FOR EACH ROW
BEGIN/*
-- ** LOGICA ** -- A trigger deve inserir um valor no campo livro_cod, a cada titulo que for repetido;
declarar variavel para titulo;
select * from tabela where titulo = variavel;
<b>SE tem resultados, fazer update no campo livro_cod += 1;</b>
*/
END
Preciso criar um Trigger pra cada titulo que for repetido, o livro_cod incrementar mais 1, porem não podemos deixar como auto increment, se não ele fica igual o resumo_cod. Estrutura da tabela abaixo. Essa tabela não vai ser alterada (Apenas pelo trigger), apenas inserção. Aceito dicas para fazer de outra maneira.
Create table Resumos
(
resumo_cod int primary key AUTO_INCREMENT
, texto_resumo varchar (255) not null
, usuario_cod int not null -- referenciar usuarios
, tag varchar (15)
, titulo varchar (15) not null
, livro_cod int -- Criar Trigger
, produto_cod int not null -- referenciar produtos
, categoria varchar (6) not null -- referenciar legendas
, data_criacao datetime
, valido varchar (6) -- referenciar legendas -- Aceita campo 1 - 2 - 3 -- NEW
);
CREATE TRIGGER TRG_InsereCodLivro BEFORE INSERT
ON Resumos
FOR EACH ROW
BEGIN/*
-- ** LOGICA ** -- A trigger deve inserir um valor no campo livro_cod, a cada titulo que for repetido;
declarar variavel para titulo;
select * from tabela where titulo = variavel;
<b>SE tem resultados, fazer update no campo livro_cod += 1;</b>
*/
END
Daniel Lucas
Curtidas 0
Respostas
Emerson Nascimento
28/05/2018
deve ser algo assim:
CREATE TRIGGER TRG_InsereCodLivro BEFORE INSERT ON Resumos FOR EACH ROW SET NEW.livro_cod = (select coalesce(max(livro_cod),0)+1 from Resumos where titulo = NEW.titulo);
GOSTEI 0