小编And*_*wMC的帖子

为什么对 @@rowcount 的两次调用会返回两个不同的值?

我有这个存储过程来保存两个表 ACDPrograms 和 DefaultCourses 中的值。这是我的全局参数

 create proc USPSvUpdtACDProgramFromTypes
    @pPRGCode char(10), 
    @pPRGName varchar(100), 
    @pPRGDescr varchar(max), 
    @pFCTID int, 
    @pMinCredits int, 
    @pNZQA int, 
    @pNoOccrPerYear int,
    @pFirstMonthOccr int, 
    @pSecondMonthOccr int, 
    @pDOMFee decimal(16,2),
    @pINTLFee decimal(16,2),
    @pIsAval int, 
    @pEmpID int, 
    @pSelCRSInfo as dbo.SelectedCourses READONLY,
    @pPRGID int output  
 as
 begin 
Run Code Online (Sandbox Code Playgroud)

如您所见,用户定义的表类型 SelectedCourses 具有以下结构

create type dbo.SelectedCourses
as table
(
    CntrNo int not null IDENTITY(1, 1), 
    CRSID int,
    YearNo int,
    IsCompulsory int,
    EntDT datetime,
    IsAval int,
    EmpID int
);
go
Run Code Online (Sandbox Code Playgroud)

在我的存储过程中存在事务,因为它在 defualtCourses 表中存储了两行四行数据,其中一行存储在 ACDPrograms 中。我的存储过程没有 try/catch 块。当迭代循环来存储四行时,迭代的工作方式就像一个魅力,但是在循环外的最后一次迭代之后,当我尝试访问 @@rowcount …

sql t-sql sql-server

2
推荐指数
1
解决办法
1617
查看次数

如何处理 SQL 数据库中的乐观并发冲突?

我正在C#SQL Server上开发一个房地产 Windows 窗体应用程序,这也是一个多用户应用程序。我没有其中使用实体框架或 LINQ!

我正在努力解决如何正确处理乐观并发冲突。假设DB中有两张表,PropertiesAddresses

  • 属性包含一般属性详细信息,例如type of propertyno of roomsprice

  • 地址具有属性地址。

当我的表单加载时,它将所有属性信息加载到datagridview. 在这种情况下,它将表中的所有信息Properties加载Addressesdatagridview.

当用户单击一行时,datagridview该行上的数据会加载到编辑表单中。然后用户更新并更新数据库。在这种情况下,可能会发生乐观并发冲突(OCV)。

但是,如何存储rowversion从“属性”和“地址”中获取的数据值,以有助于处理此 OCV 违规问题?

最初我正在考虑当用户双击该行时,“属性”“地址”rowversions表中的该记录可以存储在事务表中。但是,在加载记录后,其他用户可以更改它们的值,因此显示的内容可能会过时。因此,当用户单击一行时,我需要将“网格”(而不是数据库)上的确切数据及其原始值发送到编辑表单。执行此操作的正确方法是什么?rowversiondatagridviewrowversion

PS我被告知处理 OCV 的正确方法是在 SQL 服务器中处理它,而不是在 ADO .NET 中处理,因为 OCV 是一种数据库操作。所以我更喜欢在数据库中处理它的指导!

谢谢

c# sql sql-server

2
推荐指数
1
解决办法
1835
查看次数

如何创建一个返回 void 的匿名方法?

Func通用温控功能并不需要void作为一个参数,因此我不能创建一个匿名方法的回报void,但有一种方式来创建一个返回匿名方法void

c#

1
推荐指数
1
解决办法
135
查看次数

标签 统计

c# ×2

sql ×2

sql-server ×2

t-sql ×1