Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server:è possibile inserire in due tabelle contemporaneamente?

In una dichiarazione :No.

In una transazione :Sì

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

La buona notizia è che anche il codice sopra è garantito per essere atomico e può essere inviato al server da un'applicazione client con una stringa sql in una singola chiamata di funzione come se fosse un'unica istruzione. Puoi anche applicare un trigger a una tabella per ottenere l'effetto di un singolo inserimento. Tuttavia, alla fine sono ancora due affermazioni e probabilmente non vuoi eseguire il trigger per ogni inserire.