sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server:¿Es posible insertar en dos tablas al mismo tiempo?

En una declaración :No.

En una transacción :Sí

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

La buena noticia es que también se garantiza que el código anterior es atómico , y se puede enviar al servidor desde una aplicación cliente con una cadena sql en una sola llamada de función como si fuera una declaración. También puede aplicar un disparador a una tabla para obtener el efecto de una sola inserción. Sin embargo, en última instancia, siguen siendo dos declaraciones y probablemente no desee ejecutar el disparador para cada insertar.