Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server :Est-il possible d'insérer dans deux tables en même temps ?

Dans une instruction :Non.

En une transaction :Oui

BEGIN TRANSACTION
   DECLARE @DataID int;
   INSERT INTO DataTable (Column1 ...) VALUES (....);
   SELECT @DataID = scope_identity();
   INSERT INTO LinkTable VALUES (@ObjectID, @DataID);
COMMIT

La bonne nouvelle est que le code ci-dessus est également garanti atomique , et peut être envoyé au serveur à partir d'une application cliente avec une chaîne sql dans un seul appel de fonction comme s'il s'agissait d'une seule instruction. Vous pouvez également appliquer un déclencheur à une table pour obtenir l'effet d'une seule insertion. Cependant, il s'agit finalement toujours de deux instructions et vous ne souhaitez probablement pas exécuter le déclencheur pour chaque insérer.