怎样控制不产生重复的记录

longshujun 2010-07-20 10:42:18
数据结构如下:
CREATE TABLE [dbo].[txmData](
[id] [uniqueidentifier] NULL CONSTRAINT [DF_txmData_id] DEFAULT (newid()),
[txm] [char](11) NOT NULL,
[djh] [char](10) NOT NULL,
[zhidm] [int] NOT NULL) ON [PRIMARY]

怎样才能做到 不同的djh没有相同的txm产生,是每次插入txm的时候,都select 一下吗,如果多人同时操作还是会有不同的DJH产生相同的TXM,怎样控制才好?
...全文
93 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoqun_ncs 2010-07-21
  • 打赏
  • 举报
回复
关键字: 事务隔离级别,串行化.
longshujun 2010-07-21
  • 打赏
  • 举报
回复
我用递归,经测试,暂时没有发现问题:

insert txmData(txm,djh,zhidm,isprint)
select txm,djh,zhidm,0 as isprint from #table with (nolock)
where zhidm=@zhidm and txm not in (select txm from txmData with (nolock)
where txm in (select txm from #table where zhidm=@zhidm))

if @@rowcount=0 or @@error<>0
begin
select 'F','插入条码数据表时出错!可能是该条码已经存在了!'
rollback transaction

close txm_cur
deallocate txm_cur
drop table #table
exec createTxm @djh=@djh

return
end
longshujun 2010-07-21
  • 打赏
  • 举报
回复
xys_777:
可以告诉我们具体怎么写 函数 + check约束 吗?
永生天地 2010-07-20
  • 打赏
  • 举报
回复
写个函数 + check约束
wanglingzhong 2010-07-20
  • 打赏
  • 举报
回复
帮顶,是个问题,我也只会select 判断咯。
更好的方法,等待高手吧
longshujun 2010-07-20
  • 打赏
  • 举报
回复
同时并发的数据量大的时候,用SELECT方法容易产生不符合要求的数据,
SQLCenter 2010-07-20
  • 打赏
  • 举报
回复
我除了select想不到别的办法
longshujun 2010-07-20
  • 打赏
  • 举报
回复
对,如果不涉及到并发数据就好办了,因为同时插入产生的数据量比较大,很不好控制,一天总有一些不符合要求的数据产生
fjicefire 2010-07-20
  • 打赏
  • 举报
回复
还涉及到并发数据?
longshujun 2010-07-20
  • 打赏
  • 举报
回复
我的意思是 “相同的djh可以有相同的txm产生”,但是“不同的djh不能有相同的txm产生”,不能使用唯一约束
SQLCenter 2010-07-20
  • 打赏
  • 举报
回复
怎样才能做到 不同的djh没有相同的txm产生
----------------
唯一约束?
还是 “相同的djh可以有相同的txm产生”?
东那个升 2010-07-20
  • 打赏
  • 举报
回复
貌似只能判断

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧