2015-10-27 68 views
0

我有一個Access前端將查詢推送到SQL Server Express 2012後端。我在兩個表之間有一對一的關係,並且需要向每個表中插入一條記錄(使用未綁定的表單)。在訪問中,我可以使用這兩個表創建一個視圖,並且記錄將在第一個PK的下一個將用作FK的位置自動創建。 SQL是不同的。我試圖使用OUTPUT參數,但不理解語法。這是我的:創建INSERT-OUTPUT-INSERT查詢

INSERT into tblInsp (clmInsDate, clmDistrictNumber, clmBandColor) 
VALUES ('1-1-15',4,6) 
OUTPUT INSERTED.InspectionKEY AS myVar ;somehow get the value 
INTO xtblInspRef (clmInsp, clmRefNumber, clmInspType) 
VALUES (myVar,231,3) ;use the identity as foreign key 

我是新來的SQL,但在飛行中學習。下面是關係的圖像: Diagram

+0

是'tblInsp.InspectionKEY'列中的'INT IDENTITY(N, n)'列?如果是這樣,你可以使用系統函數'@@ IDENTITY'。請參閱[鏈接](https://msdn.microsoft.com/en-GB/library/ms187342.aspx) – BeaglesEnd

+0

請勿使用@@ IDENTITY。如果你有一個插入的觸發器,你會得到那個值,而不是你想要的值。你應該改用SCOPE_IDENTITY。 –

+0

當然,因爲這是單行插入,所以你可以直接使用INSERTED.InspectionKey https://msdn.microsoft.com/en-us/library/ms177564.aspx –

回答

0

我想出了一個辦法做到,我想用什麼臨時表:

DECLARE @scratch AS TABLE(InspectionKey int, clmRefNumber int, clmInspType int) 

INSERT INTO tblInsp (clmInsDate, clmBandColor, clmDistrictNumbr, clmCalibrationBlock, clmTGauge, clmHarTester,clmInspecter) 
    OUTPUT INSERTED.InspectionKey, 231, 3 
    INTO @scratch 
VALUES ('1-1-15',4,6) 
INSERT INTO xtblInspRef (clmInsp, clmRefNumber, clmInspType) 
SELECT InspectionKey, clmrefnumber,clmInspType 
FROM @scratch 
+0

花了我一會兒,看了很多例子和大量的測試。 msdn網站對我來說太麻煩了,無法閱讀 – fairlanecobra460