SQL触发器--插入时判断数据是否已存在
2006-09-24 12:49
1881 查看
判断插入的人员身份证号是否已存在,如存在则取消插入,并给出提示。
--身份证号唯一,但并非主键,主键是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
触发器可以理解为一种特殊的存储过程,区别在于:调用执行还是触发执行。
--身份证号唯一,但并非主键,主键是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触发器--插入时判断数据是否已存在
- oracle先判断数据是否存在再插入
- 数据库端防止并发的SQL语句 插入时就判断是否存在
- INSERT INTO .. SELECT ... FROM DUAL WHERE.插入数据前判断表中是否已经存在
- oracle插入数据前判断是否存在
- Mybatis 实现Mysql批量插入数据,判断数据是否存在
- ado.net PrimaryKey 判断插入数据是否已经存在
- sqlserver 判断当前数据是否存在 不存在则插入
- mysql 判断是否已存在及插入表数据 的 简单存储过程
- mysql插入前判断数据是否存在
- Oracle触发器实现更新一张表数据时判断另一张表是否存在,存在更新数据,不存在插入数据
- mysql插入前判断数据是否存在
- 判断数据表中记录的主键值是否存在外键约束
- 把数据写入到数据库的时,常常会碰到先要检测要插入的记录是否存在,然后决定是否要写入(转)
- Excel中判断一个表中的某一列的数据在另一列中是否存在
- Oracle存储过程:判断表中记录是否存在,存在则更新,不存在则插入!
- [ASP.NET]对Oracle数据库创建表/判断数据表是否已存在
- SDUTOJ(2140)数据结构实验之图论十:判断给定图是否存在合法拓扑序列
- 产生不同随机数,输入数据用折半查找判断数据是否存在。
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建