Trigger para inserir em outra tabela
Bom dia a todos!
Estou com uma duvida aqui não sei se por trigger poderá ser resolvido, tenho uma tabela que recebe 4 linhas ou seja 4 novos valores, preciso ordenar um campo de cada linha em ordem crescente e inserir em outra tabela em somente uma linha, ou seja cada novo valor sera um campo da linha inserida.
Alguem sabe se por trigger poderá ser feito ou de outra forma?
att
Estou com uma duvida aqui não sei se por trigger poderá ser resolvido, tenho uma tabela que recebe 4 linhas ou seja 4 novos valores, preciso ordenar um campo de cada linha em ordem crescente e inserir em outra tabela em somente uma linha, ou seja cada novo valor sera um campo da linha inserida.
Alguem sabe se por trigger poderá ser feito ou de outra forma?
att
Kaio
Curtidas 0
Respostas
Allan Monteiro
25/10/2017
Se eu entendi, você vai receber por exemplo: abacate, morango, uva, pera que será inserido assim na tabela A:
1 - abacate
2 - morango
3- uva
4-pera
e na tabela B você quer inserir 1 - abacate, morango, pera, uva. Certo?
Se sim (eu não conheço muito de SQL Server), mas você pode pegar os valores inseridos na tabela A e fazer o seguinte:
coalesce((select cast(o.NOMECAMPO as varchar(4000)) + ',' AS [text()]
from A o with (nolock)
where A.ID = B.ID
FOR XML PATH(''),TYPE).value('.[1]','VARCHAR(MAX)'),'')
Ele vai pegar todos os campos da tabela A e "concatenar" em uma linha separando por vírgula, assim você pode trabalhar no insert da tabela B.
Qualquer coisa avisa aí, estou aprendendo SQL server também.
https://sqlandme.com/2011/04/27/tsql-concatenate-rows-using-for-xml-path/
1 - abacate
2 - morango
3- uva
4-pera
e na tabela B você quer inserir 1 - abacate, morango, pera, uva. Certo?
Se sim (eu não conheço muito de SQL Server), mas você pode pegar os valores inseridos na tabela A e fazer o seguinte:
coalesce((select cast(o.NOMECAMPO as varchar(4000)) + ',' AS [text()]
from A o with (nolock)
where A.ID = B.ID
FOR XML PATH(''),TYPE).value('.[1]','VARCHAR(MAX)'),'')
Ele vai pegar todos os campos da tabela A e "concatenar" em uma linha separando por vírgula, assim você pode trabalhar no insert da tabela B.
Qualquer coisa avisa aí, estou aprendendo SQL server também.
https://sqlandme.com/2011/04/27/tsql-concatenate-rows-using-for-xml-path/
GOSTEI 0
Venancio Alves
25/10/2017
Olá Kaio, sim você pode usar Trigger para armazenar em outra tabela e mais uma função de concatenar para juntar os dados em um único campo, lembrando que existem outras soluções.
GOSTEI 0
Allan Monteiro
25/10/2017
Desculpe, vi depois que é Oracle rs.
No Oracle você pode usar o LISTAGG
exemplo de uso: Select LISTAGG(campo, ',') from tabela
Mas se não me engano, não são todas as versões que possuem este comando.
No Oracle você pode usar o LISTAGG
exemplo de uso: Select LISTAGG(campo, ',') from tabela
Mas se não me engano, não são todas as versões que possuem este comando.
GOSTEI 0
Kaio
25/10/2017
Bom dia Allan!
Nao sera concatenado, sera um registro em cada campo.
Exemplo
campo1 = abacate , campo2 = morango ...
Minha duvida é como fazer um insert de 4 registros de uma vez em uma unica linha por trigger
Nao sera concatenado, sera um registro em cada campo.
Exemplo
campo1 = abacate , campo2 = morango ...
Minha duvida é como fazer um insert de 4 registros de uma vez em uma unica linha por trigger
GOSTEI 0