关闭

SQL触发器--插入时判断数据是否已存在

1594人阅读 评论(0) 收藏 举报

判断插入的人员身份证号是否已存在,如存在则取消插入,并给出提示。
--身份证号唯一,但并非主键,主键是ZA0100
create TRIGGER flx_isexist
ON FD01
for INSERT
AS
begin
 declare @id varchar(20)
 declare @key varchar(64)
 select @id=aa0177,@key=ZA0100 from inserted

 IF ((select count(*) from FD01 where aa0177 = @id)>1)
 begin 
  delete from fd01 where ZA0100=@key
  raiserror ('该身份证用户已存在!',16,1)
  return
 end
end
使用事务,可以更简洁,如下:
create TRIGGER flx_isexist
ON FD01
for INSERT
AS
begin
   declare @id varchar(20)
   select @id=aa0177 from inserted
   IF ((select count(*) from FD01 where aa0177 = @id)>1)
   begin 
      rollback tran
      raiserror ('该身份证用户已存在!',16,1)
      return
   end
end
触发器可以理解为一种特殊的存储过程,区别在于:调用执行还是触发执行。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:257858次
    • 积分:3359
    • 等级:
    • 排名:第10632名
    • 原创:97篇
    • 转载:1篇
    • 译文:0篇
    • 评论:85条
    博客专栏
    文章分类
    最新评论