我有一個用C#編寫的SQL Server數據庫程序。在數據庫中有一個包含3列的表(ProcessData
):ID
(PK,auto-ID),Start
(DateTime),End
(DateTime)。更新/插入SQL Server數據庫表
還有很多線程會每隔幾分鐘/秒將新行插入數據庫表(ProcessData
)。
我想在開始時僅插入ID和開始列,並在幾分鐘/秒後根據ID添加結束列。
我該怎麼做?
非常感謝,
我有一個用C#編寫的SQL Server數據庫程序。在數據庫中有一個包含3列的表(ProcessData
):ID
(PK,auto-ID),Start
(DateTime),End
(DateTime)。更新/插入SQL Server數據庫表
還有很多線程會每隔幾分鐘/秒將新行插入數據庫表(ProcessData
)。
我想在開始時僅插入ID和開始列,並在幾分鐘/秒後根據ID添加結束列。
我該怎麼做?
非常感謝,
所以你想插入新行,捕獲新創建的ID,並在稍後更新行?
像這樣的事情
DECLARE @NewID INT
INSERT INTO dbo.tblProcessData(Start) VALUES (@Start)
SELECT @NewID = SCOPE_IDENTITY()
,稍後:
UPDATE dbo.tblProcessData
SET End = @End
WHERE ID = @NewID
是你在找什麼?
除非我失去了一些東西,你可以只是做一個INSERT語句在開始
INSERT INTO tblProcessData (Start) VALUES (@Start)
再到後來的更新語句
UPDATE tblProcessData SET [email protected] WHERE [email protected]
有很多方法去皮貓,但這是T-SQL方式之一
你的表 過程數據包含
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)
好了,比所有強大的問題:如何從一個INSERT語句的ID? – Oliver 2010-05-06 08:50:26
SCOPE_IDENDITY()函數包含作用域的最後插入的ID。選擇它;) – TomTom 2010-05-06 08:51:13
marc_s留下的答案是我的更完整的版本,其中包括返回ID等 – 2010-05-06 09:06:54