我要对一个字段做插入操作,但首先要判断是不是重复,如果重复就不做操作了,如何判断|?

0313700000 2003-10-04 02:39:30
不用把数据库中当前字段的值都取出来做比较把
因为是主建,或者是不比较,直接作插入,ado出错如何捕捉呢
...全文
39 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
westbulls 2003-10-04
  • 打赏
  • 举报
回复
在前台你只管插入,在后台相应表的insert触发器中
if (select count(*) from desttable where 编号=(select 编号 from inserted))>0
roolback
不就可以了吗.
但是update触发器中也要有相应的判断哟!
以上代码适用于你的前台数据是一行一行新增的,而不是用了表缓冲一次性写入。
pengdali 2003-10-04
  • 打赏
  • 举报
回复
两个方案,
一个是insert 到一个临时表,再用:
insert 你的表 (列1,列2) select 列1,列2 from #临时表 where 编号 not in (select 编号 from 你的表)

一个是用if 或error捕捉,这依赖于你的前台语言。
pengdali 2003-10-04
  • 打赏
  • 举报
回复
两个方案,
一个是insert 到一个临时表,再用:
insert 你的表 (列1,列2) select 列1,列2 from #临时表 where 编号 not in (select 编号 from 你的表)

一个是用if 或error捕捉,这依赖于你的前台语言。
0313700000 2003-10-04
  • 打赏
  • 举报
回复
我是从listctrl上取用户输入的值,然后做插入,有可能用户输入的编号又重复,我要判断,就是这样
pengdali 2003-10-04
  • 打赏
  • 举报
回复
你不如这样:

insert 你的表 (列1,列2) select 列1,列2 from 另一表 where 编号 not in (select 编号 from 你的表)


这样一句可以了。
0313700000 2003-10-04
  • 打赏
  • 举报
回复
是这样,我并不要告诉用户出错信息,如果是错的话,我就去做下一条记录,跳过这个记录了
pengdali 2003-10-04
  • 打赏
  • 举报
回复
不知道你是什么语言:
在delphi里用
try
query1.execSQL;
except
on e: Exception do
begin
showmessage('出错' + e.message);
exit;
end;
end;
showmessage('执行成功')
westbulls 2003-10-04
  • 打赏
  • 举报
回复
如果自己触发错误,那么在后台触发器中采用
raiserror('此记录重复,不可新增!',16,1)
在前台vc用
try
{ }
except
{ }
捕获相应错误信息并提示给用户。
0313700000 2003-10-04
  • 打赏
  • 举报
回复
我用vc写的,我需要区分出是怎样出错,是因为已经有了,或者是因为其他的原因
txlicenhe 2003-10-04
  • 打赏
  • 举报
回复

on error goto Err
cn.execute "insert ..."
exit sub
Err:
msgbox Err.description

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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