2012-11-10 17 views
5

Powiel możliwe:
How can I INSERT data into two tables simultaneously in SQL Server?Jak wstawić do dwóch tabel naraz w procedurze przechowywanej?

ten projekt do szkoły, więc każda pomoc będzie wielki dziękuję!

Mam dwie tabele - jak wstawić do dwóch tabel? Więc obie tabele są połączone.

Pierwsza tabela nazywa Customer z klucza podstawowego o nazwie CID sumujący auto

CREATE TABLE [dbo].[Customer](
    [CID] [int] IDENTITY(1,1) NOT NULL, 
    [LastName] [varchar](255) NOT NULL, 
    [FirstName] [varchar](255) NOT NULL, 
    [MiddleName] [varchar](255) NULL, 
    [EmailAddress] [varchar](255) NOT NULL, 
    [PhoneNumber] [varchar](12) NOT NULL   
CONSTRAINT [PK__CInforma__C1F8DC5968DD69DC] PRIMARY KEY CLUSTERED 
(

I Druga tabela nazywa Employment który ma klucz obcy powiązany z tabeli nadrzędnej

CREATE TABLE [dbo].[Employment](
    [EID] [int] IDENTITY(1,1) NOT NULL, 
    [CID] [int] NOT NULL, 
    [Employer] [varchar](255) NOT NULL, 
    [Occupation] [varchar](255) NOT NULL, 
    [Income] [varchar](25) NOT NULL, 
    [WPhone] [varchar](12) NOT NULL, 
CONSTRAINT [PK__Employme__C190170BC7827524] PRIMARY KEY CLUSTERED 
(
+1

Musisz ustawić SCOPE_IDENTITY, aby zapisać ostatnio wstawioną PK i użyć jej jako FK w następnej instrukcji. – Jaxedin

Odpowiedz

10

musisz zrób coś takiego:

DECLARE @NewID INT 

INSERT INTO Customer(LastName,FirstName,......) VALUES(Value1, Value2, .....) 

SELECT @NewID = SCOPE_IDENTITY() 

INSERT INTO Employment(CID,Employer,.....) VALUES(@NewID, ValueA,..........) 

SCOPE_IDENTITY: Powoduje zwrócenie ostatniej wartości tożsamości wstawionej do kolumny tożsamości w tym samym zasięgu. Zakres to moduł: procedura składowana, wyzwalacz, funkcja lub partia. Dlatego dwie instrukcje mają taki sam zakres, jeśli są w tej samej procedurze, funkcji lub partii.

Powiązane problemy