Olá pessoal, estou de volta com mais uma quick tip. Hoje vamos falar do comando Insert Select do Firebird. Ele nos permite inserir dados em uma tabela a partir do resultado de uma consulta.

A sintaxe é simples:

INSERT into [NOME_TABELA_INSERCAO] (campos)
SELECT [Campos] FROM [NOME_TABELA_CONSULTA]

No exemplo a seguir, temos a seguinte situação:

tabela usuário
  • Tabela USUARIO – Armazena os usuários do nosso sistema;
  • Tabela ACESSO – Armazena os acessos do nosso sistema;
  • Tabela ACESSO_USUARIO – Armazena os acessos que cada usuário do nosso sistema possui;

Imagine agora que o acesso com ID 3 (Cadastrar Vendedores) foi recém criado e por default temos que fornecer dar ele a todos os usuários do sistema.

Vamos utilizar então o INSERT SELECT para isso:

INSERT into ACESSO_USUARIO (ID_ACESSO, ID_USUARIOS)
SELECT 3, ID FROM USUARIO

Como resultado deste script, temos os seguintes dados na tabela ACESSO_USUARIO:

Tabela acesso_usuario