SQL 触发器 插入5行数据,检查插入的某一字段是否有重复;

SQL触发器插入5行数据,检查插入的某一字段是否有重复;例如Inserted里面一个字段Code,假设有两个都为1000,则返回提示。求高手解答。... SQL 触发器 插入5行数据,检查插入的某一字段是否有重复;例如Inserted 里面一个字段Code,假设有两个都为1000,则返回提示。求高手解答。 展开
 我来答
kas68310
2011-09-21 · TA获得超过3637个赞
知道大有可为答主
回答量:1468
采纳率:33%
帮助的人:1171万
展开全部
触发器貌似不被用来做这种功能...我指的是向程序返回错误信息.
你可以建一个插入行的存储过程,所有的新增记录动作调用这个过程.
在过程中可以对唯一值的要求进行查询和判断,通过则insert然后select一个成功信息,不通过则select一个错误信息.
或者你应当为Code建立主键.
追问
if exists (select 1 from Inserted I inner join MO_CompleteRptRcvLine CRL on CRL.CompleteRpt=I.ID where DocState=1 and Org=1000912250540038 and CompleteDocType=1001004157185979 and CRL.RcvLotNo!='' and CRL.RcvLotNo not in (select IDL.LotNo from Inserted I inner join MO_IssueDocLine IDL on IDL.MO=I.MO)……--'加一个条件,判断Inserted里面CRL.RcvLotNo 字段是否有重复值')
追答
在五行内部判断?如果你用触发器的话,是一行一触发的,这个只能在外部判断,最好是在程序中直接判断,如果有重复连数据库都不调,直接出错误.
有意义的比对是将关键字与数据库中已存在的数据行进行比对.
用select pam=count(...) where 来看是否存在.
如果 pam >0 则数据已存在, 返回一个错误;
如果=0,则执行写入.
通过在过程最后执行select '成功/失败' as massage 做为过程,可以将结果返回.
nickzwd
2011-09-21 · 超过24用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:68.7万
展开全部
给表的code字段建立唯一性约束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cy_paul
2011-09-21 · TA获得超过821个赞
知道小有建树答主
回答量:769
采纳率:100%
帮助的人:240万
展开全部
这样的逻辑是不是用check约束比较好奈?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户33545
2011-09-22 · TA获得超过229个赞
知道小有建树答主
回答量:758
采纳率:100%
帮助的人:491万
展开全部
给表建个唯一约束.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式