Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server:Ist es möglich, gleichzeitig in zwei Tabellen einzufügen?

In einer Anweisung :Nein.

In einer Transaktion :Ja

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

Die gute Nachricht ist, dass der obige Code auch garantiert atomar ist , und kann von einer Clientanwendung mit einer SQL-Zeichenfolge in einem einzigen Funktionsaufruf an den Server gesendet werden, als wäre es eine Anweisung. Sie können auch einen Trigger auf eine Tabelle anwenden, um den Effekt einer einzelnen Einfügung zu erzielen. Letztendlich sind es jedoch immer noch zwei Anweisungen, und Sie möchten den Trigger wahrscheinlich nicht für jeden ausführen einfügen.