SQL 触发器

一个表添加数据,另外一个表也跟着添加的触发器:数据库

create trigger [dbo].[adddate] on [dbo].[person] for insert
as declare @name varchar(20)
declare @sex varchar(20)
declare @Pid varchar(20)
select @name=name,@sex=sex,@Pid=Pid from inserted
insert into person_C (name,sex,Pid) values(@name,@sex,@Pid)app

一个表删除、另外一个表也删除的触发器:.net

Create trigger [dbo].[deletedata] on [dbo].[person] for delete
as declare @name varchar(20)
select @name=name from deleted
delete from person_C where name=@name
print '删除成功'code

一个表修改,另外一个也修改的触发器:get

create trigger updatedate on person for update
as declare @name varchar(20)
declare @sex varchar(20)
declare @Pid varchar(20)
select @name=name from deleted ---更新前的数据[select @name=name from inserted---更新后的数据]
update person_C set sex=@sex,Pid=@Pid where name=@nameclass

当表的数据达到什么条件时 抛出异常阻止插入object

ALTER trigger  [dbo].[shutdonwadd] on [dbo].[h_swarehouse] for INSERT
as
declare  @prtime varchar(50)
declare @cu_no varchar(20)
declare @serialNumber int
select @prtime=prtime,@cu_no=cu_no,@serialNumber=serialNumber from INSERTED
if ((@prtime='2016/04/14' or @prtime='2016-04-14' or  @prtime='2016/4/14')and @cu_no='HD' and @serialNumber>895)
BEGIN
    RAISERROR('流水号已大于895',16,1)
    ROLLBACK
    RETURN
 END
date

查询数据库全部的触发器:select name from sysobjects where xtype='TR' --全部触发器名称select

查询有触发器的表
im

select name 表格名称 from sysobjects where xtype='U'  AND id in(select parent_obj from sysobjects where xtype='TR')------查询有触发器的表

select name 表格名称 from sysobjects where xtype='U'  AND id NOT in(select parent_obj from sysobjects where xtype='TR')------查询没有触发器的表

有多少触发器用下面的就行:

select a.name 数据表名,sysobjects.name as 触发器名,sysobjects.crdate as 建立时间 from sysobjects 
left join (select *from sysobjects where xtype='U')as a on sysobjects.parent_obj=a.id
where sysobjects.xtype='TR'
相关文章
相关标签/搜索