Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server:Czy można wstawiać do dwóch tabel jednocześnie?

W jednym oświadczeniu :Nie.

W jednej transakcji :Tak

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

Dobrą wiadomością jest to, że powyższy kod jest również atomowy , i mogą być wysyłane do serwera z aplikacji klienckiej z jednym ciągiem sql w jednym wywołaniu funkcji, tak jakby była to jedna instrukcja. Możesz również zastosować wyzwalacz do jednej tabeli, aby uzyskać efekt pojedynczego wstawienia. Jednak ostatecznie są to nadal dwa stwierdzenia i prawdopodobnie nie chcesz uruchamiać wyzwalacza dla każdego wstaw.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można użyć predykatu CONTAINS lub FREETEXT w tabeli lub widoku indeksowanym, ponieważ nie jest indeksowany pełnotekstowo

  2. Nie używaj sp_depends w SQL Server (jest przestarzałe)

  3. Jak ustawić bieżący język w SQL Server (T-SQL)

  4. Zwróć listę wyzwalaczy w SQL Server

  5. WYBIERZ DO AKTUALIZACJI z SQL Server