UP,最后一句话或者设置成Visible = False状态应当改成或者设置成Enabled = False状态即其它用户把字典设置成不可用状态
解决方案 »
- DbConnection IDbConnection 可以换着用吗
- 看看SqlBuckCopy批量复制表数据
- 用ASP.NET怎么做"在线答疑"呀?
- 用C#创建资源管理器左边的Explore tree容易吗?
- TextBox的问题,简单。
- 连接数据库问题
- 用Timer控件把系统时间显示在TEXTBOA控件中,请大家帮我写写这个代码
- 我建了一个usercontrol工程,里面有几个usercontrol.cs,但是我只想其中一个对外可见
- 高分求购一个用c#写的web程序,access数据库即可(加一个dbgrid即可)
- 希望人能解决一下,关于datagrid的再绑定问题。
- 如查取得.net 中 DataTable 中 DataColumn 字段列的宽度
- 如查取得.net 中 DataTable 中 DataColumn 字段列的宽度
当DictType=2时,DictID引用的是 D2的记录...这样的 T 表我相信绝大部分人都用过吧
declare @vFD1 int,@vFD2 int,@vFDn int
select @vFD1=1,@vFD2=1,@vFDn=2--插入数据时的处理--出错时回滚事务并终止处理
set xact_abort on--开启事务,以备进行处理
begin tran
--有效性检查
if not exists(
select * from D1 with(XLOCK,PAGLOCK) --用排它锁,防止其他用户对表进行操作
where D=@vFD1 and Enable = 1)
begin
raiserror('违反约束,%d 在D1中无效',1,16,@vFD1)
rollback tran
return
end --有效性检查
if not exists(
select * from D2 with(XLOCK,PAGLOCK) --用排它锁,防止其他用户对表进行操作
where D=@vFD2 and Enable = 1)
begin
raiserror('违反约束,%d 在D2中无效',1,16,@vFD2)
rollback tran
return
end --有效性检查
if not exists(
select * from Dn with(XLOCK,PAGLOCK) --用排它锁,防止其他用户对表进行操作
where D=@vFDn and Enable = 1)
begin
raiserror('违反约束,%d 在Dn中无效',1,16,@vFDn)
rollback tran
return
end --通过有效性检查,则插入记录
insert T(vFD1,vFD2,vFD1)
values(@vFD1,@vFD2,@vFDn)
commit tran
这给那些正在出报表的用户带来很大的麻烦
因为一般情况下单据的录入几乎是不间断的,这就意味着
那些做报表或作查询的客户端几乎无法查询出结果3.我曾试过用软锁(就是自己插入记录到一张表中表示记录被使用
完成后再删除记录)的方法控制, 但是对于这样的T表,需要插入
n条记录锁,再删除,效率的确不高4.另外每次插入一条记录都在再次到数据库中检查相关的字典记录是否存在
实在是导致效率低下的罪魁祸首5.如果数据库本身能提供一个Lock Data [Table Name] [PK id] 这样的功能就好了这个问题的确很麻烦, 我甚至看过Kingdee K3的SP, 也存在不小的漏洞
(他们是先到每个表中查询记录是否存在,
但仍然不能排除在查询过后用户删除字典,虽然时间很短)
with(XLOCK,PAGLOCK) 正是我所要的功能可惜这个只能在Sql2000以上用, 实在很佩服你对MS SQL的了解程度 :)