Como criar uma Trigger de inserção?

MySQL

31/08/2009

Olá amigos do fórum, estou com uma dúvida, na qual já pesquisei, mas não consegui fazer o que preciso.
Tenho duas tabelas
TBEmissora
id_emissora
nome_emissora

TBUsuario
id_usuario
nome_usuario
idemissora_usuario

Como fazer uma trigger que na hora que eu inserir uma nova emissora a trigger me cadastra um novo usuario com um nome padrão, pois quando o usuário entra no sistema ele deve primeiro selecionar a emissora
Por exemplo o usuario seria
login - usuario
senha - usuario
e o id da nova emissora


---------

O mesmo acontece no cadastro de bairros,
como faço na trigger para quando eu cadastrar uma cidade nova, essa trigger inserir no banco de dados do bairro um novo bairro por exemplo com nome centro (nome da cidade inserida)

tbcidade
id_cidade
nome_cidade

tbbairro
id_bairro
nome_bairro
idcidade_bairro

Obrigado aos amigos que puderem me ajudar.


Junior-programador

Junior-programador

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

31/08/2009

tente assim:

create trigger ai_emissora
after insert on tbemissora
for each row
begin
  insert into tbusuario (nome_usuario, senha, idemissora_usuario) values (´user´, ´password´, new.id_emissora);
end


create trigger ai_cidade
after insert on tbcidade
for each row
begin
  insert into tbbairro (nome_bairro, idcidade_bairro) values (´Centro´, new.id_cidade);
end



GOSTEI 0
Junior-programador

Junior-programador

31/08/2009

Amigo emerson.en
Minha trigger funcionou assim

begin
      Insert Into tbusuario(
      nome_usuario, 
                senha_usuario,
                login_usuario, 
                idemissora_usuario)
            VALUES
                (´PRINCIPAL´,
                 ´usuario´,
                 ´123mudar´,
                 new.id_emissora);
                
   end


Mas será possivel inserir li no PRINCIPAL, ele inserir a palavra PRINCIPAL mais o nome da emissora que cadastrei, por exemplo assim
PRINCIPAL (MASTERFM)

Aguardo retorno amigo.
Obrigado.




tente assim:
create trigger ai_emissora
after insert on tbemissora
for each row
begin
  insert into tbusuario (nome_usuario, senha, idemissora_usuario) values (´user´, ´password´, new.id_emissora);
end
create trigger ai_cidade
after insert on tbcidade
for each row
begin
  insert into tbbairro (nome_bairro, idcidade_bairro) values (´Centro´, new.id_cidade);
end



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

31/08/2009

é possível, sim. mas vai depender do comando aceito no MySQL. eu uso SQL Server e Firebird, portanto não sei exatamente como concatenar no MySQL.

tente assim:
begin
      Insert Into tbusuario(
               nome_usuario,
                senha_usuario,
                login_usuario,
                idemissora_usuario)
            VALUES
                (´PRINCIPAL (´ + new.nome_emissora + ´)´,
                 ´usuario´,
                 ´123mudar´,
                 new.id_emissora);
               
   end


ou assim:
begin
      Insert Into tbusuario(
               nome_usuario,
                senha_usuario,
                login_usuario,
                idemissora_usuario)
            VALUES
                (´PRINCIPAL (´ || new.nome_emissora || ´)´,
                 ´usuario´,
                 ´123mudar´,
                 new.id_emissora);
               
   end


note que a única diferença é o operador de concatenação (´+´ ou ´||´).


GOSTEI 0
Junior-programador

Junior-programador

31/08/2009

Emerson, infelizmente, não deu, da erro na hora de inserir nas duas opções.

Aguardo retorno.


GOSTEI 0
Junior-programador

Junior-programador

31/08/2009

Amigo Emerson, consegui, dando uma olhada na net, veja como ficou

BEGIN
Insert Into tbbairro(
nome_bairro,
cep_bairro,
idcidade_bairro)
VALUES
(CONCAT(´CENTRO (´,new.nome_cidade,´)´),
´00.000-00´,
new.id_cidade);
END

Fiz uma concatenação dos dois resultados, funcionou perfeito, antes quero agradecer sua atenção.
Valeu brother


Júnior


GOSTEI 0
POSTAR