Pergunta

Aqui está o meu procedimento:

PROCEDURE add_values
AS
BEGIN

   INSERT INTO TABLE_A ...
   SELECT t.id, t.name FROM TABLE_C ("This selection will return multiple records")

END

Enquanto ele insere em TableA, gostaria de inserção em outra tabela (TableB) para esse registro particular que foi inserido no tableA.

As colunas TableA e TableB são diferentes. É sábio para chamar uma função antes de inserir TableB? - Eu gostaria de realizar certa Obtém e define com base no id inserido no tableA

Foi útil?

Solução

Tente este

Entradas

declare @tblA table (id int,name varchar(20))
declare @tblB table (id int,name varchar(20))
declare @tblC table (id int identity,name varchar(20))
insert into @tblC 
    select 'name1' union all select 'name2' union all
    select 'name3' union all select 'name4' union all
    select 'name5' union all select 'name6' union all
    select 'name7' union all select 'name8' union all
    select 'name9' union all select 'name10' union all
    select 'name11' union all select 'name12' union all
    select 'name13' union all select 'name14' union all
    select 'name15' union all select 'name16' union all
    select 'name17' union all select 'name18' union all
    select 'name19' union all select 'name20' 

Consulta

insert @tblA 
output INSERTED.id, INSERTED.Name
into @tblB 
select 
    id,name
from @tblC 
where id % 2 = 0

select * from @tblA
select * from @tblB

Output: [Para a tabela A & B]

nome id

2   name2
4   name4
6   name6
8   name8
10  name10
12  name12
14  name14
16  name16
18  name18
20  name20

Basicamente eu estou inserindo esses registros em TableA de TableC cujo do id são ainda. E, em seguida, usando cláusula de saída inserindo os valores de TableA para TableB

Para mais informações OUTPUT Cláusula

Espero que isso faz sentido

Outras dicas

Você pode criar um gatilho para fazê-lo, se esta é a única maneira que você inserir dados na tabela. (Caso contrário, ele será executado em cada inserção)

ou você pode interagir em um cursor que lhe permitirá fazê-lo com cada inserção da seleção

( Cursor exemplo

A melhor técnica depende dos detalhes de suas definições de tabela e as consultas associadas. Com base na informação em sua pergunta, talvez algo como isto:

CREATE PROCEDURE add_values
AS
BEGIN
  BEGIN TRANS
    INSERT INTO TableA
      SELECT id, name FROM TableC
    INSERT INTO TableB
      SELECT id, name FROM TableC
  COMMIT
END

No MySQL tentativa INSERT..SELECT, como este:

INSERT INTO tableB SELECT * FROM tableA where id = LAST_INSERT_ID();

http: // dev .mysql.com / doc / refman / 5.0 / en / ansi-diff-select-a-table.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top