表(User):
CREATE TABLE [dbo].[User](
[UID] [varchar](6) NOT NULL,
[UName] [varchar](10) NULL,
[State] [int] NULL,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED ) ON [PRIMARY]
当state=1时,不能删除在web程序(C#),两个用户同时打开一个“UID=9,UName='张三',State=0”的记录并在页面中显示,用户1通过'审核'将State更改成1,之后,用户2执行删除操作,那么删除之前必须要做两件事,否则删除将出问题:1)记录是否存在2)state是否为1,而且这两个判断还必须在事务中。我以前是用Delphi的,在使用TQuery时,执行删除时,系统发送的是delete from User where UID=:@old_uid and UName=:@old_uname and State=:@old_state,由于old_state=0,所以删除时影响函数为0,那么TQuery自动抛出异常"后台记录不存在,请检查",这样可以保证数据不会出现问题在C#中如何实现呢?需要自己手工写吗?如何能很方便的获取old_state值呢?
CREATE TABLE [dbo].[User](
[UID] [varchar](6) NOT NULL,
[UName] [varchar](10) NULL,
[State] [int] NULL,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED ) ON [PRIMARY]
当state=1时,不能删除在web程序(C#),两个用户同时打开一个“UID=9,UName='张三',State=0”的记录并在页面中显示,用户1通过'审核'将State更改成1,之后,用户2执行删除操作,那么删除之前必须要做两件事,否则删除将出问题:1)记录是否存在2)state是否为1,而且这两个判断还必须在事务中。我以前是用Delphi的,在使用TQuery时,执行删除时,系统发送的是delete from User where UID=:@old_uid and UName=:@old_uname and State=:@old_state,由于old_state=0,所以删除时影响函数为0,那么TQuery自动抛出异常"后台记录不存在,请检查",这样可以保证数据不会出现问题在C#中如何实现呢?需要自己手工写吗?如何能很方便的获取old_state值呢?
解决方案 »
- 求C#做一个类似于劲乐团游戏
- C# ArrayList 问题 ,急
- [提问]websdervice使用回调后出现的问题,比较诡异,忘达人赐教
- ImageList.ImageSize.Width的值为什么不能设置?
- (100分)求教如何利用ngen.exe命令将程序集在安装时生成本地代码??
- 急,帮个忙,谁有C#串口操作的原代码呢?
- 问一个菜鸟的问题 stack trace是什么意思?
- WinForm中的DataGrid如何实现跨行
- 怎么样在关闭线程时先执行一个我写的方法?
- listview(c# winform) 添加自定义控件不出滚动条怎么办
- 求socket、thread通讯源码
- 【请教】异步调用中出现的问题,很奇怪的问题
数据库的锁机制和事务处理
如
SELECT * FROM table WITH (HOLDLOCK)
其他事务可以读取表,但不能更新删除SELECT * FROM table WITH (TABLOCKX)
其他事务不能读取表,更新和删除
using(TransactionScope scope = new TransactionScope())
{
//方法1
//方法2
scope.Complete();
}