Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server:É possível inserir em duas tabelas ao mesmo tempo?


Em uma declaração :Não.

Em uma transação :Sim
BEGIN TRANSACTION
   DECLARE @DataID int;
   INSERT INTO DataTable (Column1 ...) VALUES (....);
   SELECT @DataID = scope_identity();
   INSERT INTO LinkTable VALUES (@ObjectID, @DataID);
COMMIT

A boa notícia é que o código acima também é garantido como atômico , e pode ser enviado para o servidor de um aplicativo cliente com uma string sql em uma única chamada de função como se fosse uma instrução. Você também pode aplicar um gatilho a uma tabela para obter o efeito de uma única inserção. No entanto, ainda são duas instruções e você provavelmente não deseja executar o gatilho para todos inserir.