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

原创 2012年03月26日 10:53:05

判断插入的人员身份证号是否已存在,如存在则取消插入,并给出提示。
--身份证号唯一,但并非主键,主键是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
触发器可以理解为一种特殊的存储过程,区别在于:调用执行还是触发执行。

sql server 2000/2005 判断存储过程、触发器、视图是否存在并删除

1、判断是否存在addOneArticle这个存储过程  if Exists(select name from sysobjects where NAME = 'addOneArticle' and...
  • xocom
  • xocom
  • 2012年04月17日 12:23
  • 3335

SqlServer Update触发器判断某个字段的值是否已经更改

要求:修改主表中某个字段的值,自动更新子表中的某个字段 我们为了不更改程序,创建一个update触发器。 create trigger [tig_update] on 表名 after update...
  • zhangshufei8001
  • zhangshufei8001
  • 2016年06月02日 17:51
  • 9227

Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL

我们在开发数据库相关的逻辑过程中, 经常检查表中是否已经存在这样的一条记录, 如果存在则更新或者不做操作, 如果没有存在记录,则需要插入一条新的记录。 这样的逻辑固然可以通过两条sql语句完成。 SE...
  • langeldep
  • langeldep
  • 2011年03月11日 20:10
  • 23002

oracle先判断数据是否存在再插入

有时候用oracle的数据库,插入数据的时候需要判断一下。比如,每天每人只能写一条。 在插入的时候就要先做个判断,查一下是不是当天有此人的操作记录。 就要先 select count(*) f...
  • CsethCRM
  • CsethCRM
  • 2014年05月16日 11:24
  • 2572

mysql 防止插入重复数据sql和触发器

这里主要使用了mysql中的虚拟表dual。 有时候我们希望在插入一行新数据前,直接在sql中判断这个数据段的值是不是有重复,比如说插入一个新栏目,判断这个栏目名称是否存在。 表blog_note...
  • sujudz
  • sujudz
  • 2012年11月03日 07:15
  • 7817

sqlite3触发器的使用

研究了一下osx下dock中应用的存储,位于~/Library/Application Support/Dock/下一个比较名字比较长的db文件中,之前简单的介绍过osx launchpad图标的删除...
  • dliyuedong
  • dliyuedong
  • 2014年10月29日 00:22
  • 10367

IOS -- SQLite数据库判断表是否存在

SQLite数据库中一个特殊的名叫 SQLITE_MASTER 上执行一个SELECT查询以获得所有表的索引。每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表, 它定义数据库的...
  • zhouleizhao
  • zhouleizhao
  • 2014年06月17日 17:03
  • 4777

数据库端防止并发的SQL语句 插入时就判断是否存在

insert into `aaa` ( `APP_TYPE_ID`, `APP_TIME_ID`, `CREATE_USER`, `APPOINTMEN_DATE` ) select...
  • Sugar_521
  • Sugar_521
  • 2017年04月11日 17:37
  • 403

mysql插入前判断数据是否存在

业务场景:需要记入访客的访问情况,但不能重复记入可以插入前进行判断要插入的数据是否存在业务代码如下 :INSERT INTO t_topic_vistor(user_id,topic_code) SE...
  • lai0yuan
  • lai0yuan
  • 2017年10月14日 14:25
  • 303

SQLite: sqlite_master系统表,可以判断某个表是否存在,存在哪些表

SQLite数据库中一个特殊的名叫 SQLITE_MASTER 上执行一个SELECT查询以获得所有表的索引。每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表, 它定义数据库的...
  • xxcios
  • xxcios
  • 2013年07月26日 14:24
  • 3842
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL触发器--插入时判断数据是否已存在
举报原因:
原因补充:

(最多只允许输入30个字)