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'
相關文章
相關標籤/搜索