以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]SQL SERVER2000的主键问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=27841) |
-- 作者:hiliuyong -- 发布时间:2013/1/11 18:08:00 -- [求助]SQL SERVER2000的主键问题 在SQL SERVER2000中,狐表把_Identify设置为主键,可以防止主键重复, 有没有办法,在数据库中禁止列“单号”重复, 狐表的DATATABLE只是限制了加载的重复,如何实现数据库中也防止“单号”重复,请高人指教! 用狐表代码的方式我已经考虑过,如果行数多的话,要逐条判断,效率大受影响。 [此贴子已经被作者于2013-1-11 18:09:15编辑过]
|
-- 作者:lin_hailun -- 发布时间:2013/1/11 18:11:00 -- 方法一:给这个表设置 唯一约束,这样如果保存了不符合的数据,就会提示报错的。 方法二:编码控制。 http://www.foxtable.com/help/topics/1994.htm http://www.foxtable.com/help/topics/2481.htm [此贴子已经被作者于2013-1-11 18:12:21编辑过]
|
-- 作者:hiliuyong -- 发布时间:2013/1/12 17:07:00 -- lin 我是通过SQL SERVER设置了唯一约束, 代码如下: \'保存,并捕获错误代码
但是程序只是在 Try |
-- 作者:hiliuyong -- 发布时间:2013/1/12 17:17:00 -- 报错代码如下: .NET Framework 版本:2.0.50727.3053 |
-- 作者:lin_hailun -- 发布时间:2013/1/14 18:12:00 -- 以下是引用hiliuyong在2013-1-12 17:07:00的发言: lin 我是通过SQL SERVER设置了唯一约束, 代码如下: \'保存,并捕获错误代码
但是程序只是在 Try 呵呵,不会抛出异常的,所以无法捕捉!暂时只能使用方法二去控制吧。 |
-- 作者:狐狸爸爸 -- 发布时间:2013/1/15 9:21:00 -- 除了小林说的方法,还可以考虑:
http://www.foxtable.com/help/topics/0628.htm
在这个事件判断断号是否发生变化,如果已经发生变化,就从后台查找是否有同样的单号,如果有,则拒绝保存,这样可以提前捕获绝大多数可能的错误。
|
-- 作者:hiliuyong -- 发布时间:2013/1/21 18:53:00 -- 这个是实现从远程数据库判断,而且数据量比较大,用代码判断比较简单,但如果导入数据量大的话,效率会异常低下, 我希望可能捕获唯一约束的那个报错,在导入每一条数据的时候,就减少一次通讯。 狐爸有没有办法可以让我捕获这个错误呢。 |
-- 作者:lin_hailun -- 发布时间:2013/1/22 11:35:00 -- 以下是引用hiliuyong在2013-1-21 18:53:00的发言: 这个是实现从远程数据库判断,而且数据量比较大,用代码判断比较简单,但如果导入数据量大的话,效率会异常低下, 我希望可能捕获唯一约束的那个报错,在导入每一条数据的时候,就减少一次通讯。 狐爸有没有办法可以让我捕获这个错误呢。 没有办法哦,如果要追求效率的话,只能是自己编写存储过程了。 --------------------- 狐表目前不支持事务,只能自己通过代码去完成这件事情了。 比如,多条插入语句写在一个事务里去,然后检测是否有错误,出错的话,就RollBack Dim cmd As new SQLCommand cmd.Co nectio nName = "xxx" cmd.CommandText = "Begin Transaction test; update 订单 set 单价 = 999; Commit Transaction test" \'cmd.CommandText = "Begin Transaction test; update 订单 set 单价 = 999; ROLLBACK Transaction test" cmd.ExecuteNonQuery |