更新/插入SQL Server数据库表
问题描述:
我有一个用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