2012-07-06 51 views
2

對於'新記錄'網站,我有一個FormView連接到SqlDataSource。用戶輸入數據並且InsertCommand具有SQL INSERT語句。問題是我想做其他查詢作爲初始化的一部分,這些查詢涉及其他表。一個SqlDataSource上的多個INSERT語句

基本上我想在用戶點擊「插入」按鈕時執行所有這些查詢。 第一個INSERT從輸入表單獲取值,但其他三個總是相同的。

INSERT INTO proceso (nombreProceso, macroProceso, analista_id) 
VALUES (@nombreProceso,@macroProceso,@analista_id) 
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (1,'False',@id) 
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (2,'False',@id) 
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (3,'False',@id) 

當我運行此,第一條語句顯然是被執行(即新proceso一條記錄被插入),但其他3個INSERT語句中沒有。我應該如何着手解決這個問題?

的SqlDataDource包含ID參數

<InsertParameters> 
    ... a few parameters... 
    <asp:Parameter Name="id" /> 
</InsertParameters> 
+0

@id是由第一次插入返回的? – 2012-07-06 03:17:50

+0

它是字段中的一個參數。剛剛編輯我的問題來顯示它。 – leonsas 2012-07-06 03:23:01

+0

什麼錯誤給你?請告訴我們更多。或者說,一切似乎都很好,而且值不插入? – 2012-07-06 03:25:12

回答

1

請糾正我,如果我錯了,但在我看來,你想要的@id事情只是插入proceso行的ID。至少似乎從相應的marcador_progreso列的名稱(proceso_id)開始。如果我的猜測是正確的,那麼你不需要參數,稱爲id。您的查詢中的@id應該是局部變量,由第一個INSERT插入的行的ID初始化。

如果proceso的ID是一個整數IDENTITY列,然後改變你的腳本是這樣的:

INSERT INTO proceso (nombreProceso, macroProceso, analista_id) 
VALUES (@nombreProceso,@macroProceso,@analista_id); 
 DECLARE @id int; SET @id = SCOPE_IDENTITY();  
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (1,'False',@id); 
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (2,'False',@id); 
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (3,'False',@id); 

,並清除id參數。

SCOPE_IDENTITY()函數返回插入到當前執行範圍的任何表的IDENTITY列中的最後一個值。