SQL 触发器 插入5行数据,检查插入的某一字段是否有重复;
SQL触发器插入5行数据,检查插入的某一字段是否有重复;例如Inserted里面一个字段Code,假设有两个都为1000,则返回提示。求高手解答。...
SQL 触发器 插入5行数据,检查插入的某一字段是否有重复;例如Inserted 里面一个字段Code,假设有两个都为1000,则返回提示。求高手解答。
展开
4个回答
展开全部
触发器貌似不被用来做这种功能...我指的是向程序返回错误信息.
你可以建一个插入行的存储过程,所有的新增记录动作调用这个过程.
在过程中可以对唯一值的要求进行查询和判断,通过则insert然后select一个成功信息,不通过则select一个错误信息.
或者你应当为Code建立主键.
你可以建一个插入行的存储过程,所有的新增记录动作调用这个过程.
在过程中可以对唯一值的要求进行查询和判断,通过则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 做为过程,可以将结果返回.
展开全部
给表的code字段建立唯一性约束。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样的逻辑是不是用check约束比较好奈?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给表建个唯一约束.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询