quarta-feira, 1 de junho de 2011

Inserindo múltiplas linhas com um único comando

Uma das novidades do SQL Server 2008 em relação às versões anteriores é uma sintaxe alternativa para o comendo INSERT que permite a inserção de múltiplas linhas através da execução de um único comando.

A nova estrutura permite declarar várias linhas entre parênteses, separadas por vírgulas. Veja esta opção de sintaxe:

INSERT INTO tabela (coluna1,coluna2, coluna3)
VALUES (valor1,valor2,valor3),(valor4,valor5,valor6),(valor7,valor8,valor9)

Assim, pode-se substituir scripts como este:

INSERT INTO Contato(nome,email,telefone)
   VALUES ('Evandro','evandro@email.com','3456-7890')
INSERT INTO Contato(nome,email,telefone)
   VALUES ('Ronaldo','contato@ronaldo.com.br','8765-5432')
INSERT INTO Contato(nome,email,telefone)
    VALUES ('Mariana','mariana@email.com','3344-9988')
INSERT INTO Contato(nome,email,telefone)
    VALUES ('José','falecom@jose.com','5678-1011')

Por estruturas como esta:

INSERT INTO Contato(nome,email,telefone)
VALUES
   ('Evandro','evandro@email.com','3456-7890'),
   ('Ronaldo','contato@ronaldo.com.br','8765-5432'),
   ('Mariana','mariana@email.com','3344-9988'),
   ('José','falecom@jose.com','5678-1011')

Este modelo já vem sendo utilizado nos exemplos deste blog, pois diminui o tamanho dos scripts gerados e também facilita a vida do desenvolvedor SQL.

6 comentários:

Rubens disse...

Muito boa essa dica, obrigado.

Evandro Junqueira Ramos disse...

Muito obrigado, Rubens!

Felix disse...

Oi galera, comecei agora com o SQL e estou usando o SQL Server management studio 2008, e ele não aceita a inserção de varias linhas com um único INSERT INTO e com os atributos separados por vírgulas, como está na dica. Como faço para "atualizá-lo" para a versão que aceite essa funcionalidade ? Obrigado

Evandro Junqueira Ramos disse...

Olá Felix! Você atualizou apenas o Management Studio(SSMS)? Lembre-se que as queries são executadas no servidor SQL Server.

Assim, se você utilizar o SSMS 2008 para executar consultas em um servidos SQL Server 2000, elas serão processadas pela Engine da versão 2000, e deve respeitar a sintaxe desta versão.

Thiago disse...

Vlw Pela dica, ajudou aqui no trampo :)

cesarfonseca disse...

Já tem um tempinho esta ótima dica e somente hoje eu a vi.
Está sendo muito útil. Obrigado.

Postar um comentário