2010-05-06 230 views
0

我有一個用C#編寫的SQL Server數據庫程序。在數據庫中有一個包含3列的表(ProcessData):ID(PK,auto-ID),Start(DateTime),End(DateTime)。更新/插入SQL Server數據庫表

還有很多線程會每隔幾分鐘/秒將新行插入數據庫表(ProcessData)。

我想在開始時僅插入ID和開始列,並在幾分鐘/秒後根據ID添加結束列。

我該怎麼做?

非常感謝,

回答

1

所以你想插入新行,捕獲新創建的ID,並在稍後更新行?

像這樣的事情

DECLARE @NewID INT 

INSERT INTO dbo.tblProcessData(Start) VALUES (@Start) 
SELECT @NewID = SCOPE_IDENTITY() 

,稍後:

UPDATE dbo.tblProcessData 
SET End = @End 
WHERE ID = @NewID 

是你在找什麼?

0

除非我失去了一些東西,你可以只是做一個INSERT語句在開始

INSERT INTO tblProcessData (Start) VALUES (@Start) 

再到後來的更新語句

UPDATE tblProcessData SET [email protected] WHERE [email protected] 

有很多方法去皮貓,但這是T-SQL方式之一

+0

好了,比所有強大的問題:如何從一個INSERT語句的ID? – Oliver 2010-05-06 08:50:26

+3

SCOPE_IDENDITY()函數包含作用域的最後插入的ID。選擇它;) – TomTom 2010-05-06 08:51:13

+0

marc_s留下的答案是我的更完整的版本,其中包括返回ID等 – 2010-05-06 09:06:54

0

你的表 過程數據包含

ID(PK, auto-ID) 
Start(DateTime) 
End(DateTime) 

查詢

Insert Into ProcessData(Start) values (your value) 

After some time 

Update ProcessData Set End=(your value) where ID= (your ID)