数据库中触发器

触发器

步骤:打开选用的‘数据库’,然后打开‘可编程性’,就可以找到‘数据库触发器’。

是一种存储过程,只是不通过  exec 调用执行!

通过增删改语句来引发执行!

在有主外键关联时,可以把关联的信息都修改

(有主外键关联时,要先删除外键才可以删主键)

create table new

(code int ,

shu  int)

go

insert into new values (1,1)

insert into new values (2,3)

insert into new values (3,4)

insert into new values (4,5)

insert into new values (5,6)

select *from new

drop table new

----------------------------------------------------

create trigger TR_new_Delete  --创建并命名触发器

on new --作用于new

for delete--delete/insert/update   --先执行删除语句,再进行插入语句

as

insert into new values (11,11)--占据删除数据的位置

insert into new values (3,4)--在新插入数据的位置

go到此,触发器完成。

 

delete from new where code=3

--引发触发器语句,只能是增删改

select *from new

for/after  先运行go再运行as

--先go删除了code=3,再as添加了code=11,code=3

-- drop trigger TR_new_Delete

--------------------------------------------------

create trigger TR_new_Delete

on new

instead of delete

as

insert into new values (11,11)

go

delete from new where code=2

select * from new

--此时不执行删除语句,只执行插入语句!

instead of只运行as的语句

 

 

----------------------------------------------

alter  trigger dongtaichufa

on teacher

instead of delete

as

begin

declare @Tno varchar(20)

set @Tno=(select Tno from deleted)

--deleted 表示虚拟表(go后面的delete 语句)

update teacher set Tname=‘递归‘where [email protected]

end

go

delete  from teacher where Tno=‘856‘

select *from teacher

---------------------------------------------

--触发器可以处理视图,(用途:1.删除数据时备份2.操作视图,即有主外键关联时)

create  trigger inserttt

on teacher

for  insert

as

declare @Tno varchar(19)

set @Tno=(select Tno from inserted)

 update teacher set Tsex=‘where [email protected]  --修改表内容

go

insert into teacher values

(‘789‘,‘集合‘,‘女‘,‘1990-09-09‘,‘教授‘,‘生物系‘)

select *from teacher

----------------------------------------------

alter table teacher disable trigger all--(或触发器名字)禁用全部

alter table teacher enable  trigger all--(或触发器名字)启用全部

时间: 2024-11-06 11:32:18

数据库中触发器的相关文章

数据库中触发器before与after认识

Before与After区别: before:(insert.update)可以对new进行修改,after不能对new进行修改,两者都不能修改old数据. 对于INSERT语句, 只有NEW是合法的: 对于DELETE语句,只有OLD才合法: 对于UPDATE语句,NEW.OLD可以同时使用. 例子如下: 1 mysql> select * from t1; 2 +----+-------+ 3 | id | name | 4 +----+-------+ 5 | 1 | zhang | 6

数据库中触发器的创建与注意事项

[IT专家网独家] 触发器是特殊的存储过程,但它的执行不是由手工调用,也不是由程序执行,触发器必须由事件才能触发.触发器的触发事件分可为3类,分别是DML事件.DDL事件和数据库事件. DML触发器的要点 DML触发器是定义在表上的触发器,由DML事件引发.编写DML触发器的要素是: 确定触发的表,即在其上定义触发器的表. 确定触发的事件,DML触发器的触发事件有INSERT.UPDATE和DELETE三种 确定触发时间.触发的时间有BEFORE和AFTER两种,分别表示触发动作发生在DML语句

SQLserver数据库之触发器

在SQLserver数据库中触发器中大致分为两种:DDL.DML触发器,即系统触发器与表触发器,系统触发器是对数据库对象进行操作的触发器,表触发器是对表格的增删改时候所进行的触发器.在这里我们就只说表的触发器. 表的触发器也分为两种,分别为:instead of.after(for):分别在表操作之前与表操作之后进行触发.而且两种触发器都有三个触发条件:insert.delete.update.基本语法为: create trigger tgr_name on table_name with e

查询SQLServer2005中某个数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数

查询SQLServer2005中某个数据库中的表结构.索引.视图.存储过程.触发器以及自定义函数 2013-03-11 09:05:06|  分类: SQL SERVER|举报|字号 订阅 (1)查询SQLServer2005中某个数据库中的表结构 SELECT TOP 100 PERCENT --a.id,CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,CASE WHEN a.colorder = 1 THEN isnull(f.v

SQL 中怎么查询数据库中具有的表、存储过程、试图数目、总触发器数、作业数

用户表:select count(*) 总表数 from sysobjects where xtype='u' 刚才那个是用户表,下面这个是系统表加用户表: select count(*) 总表数 from sysobject s where xtype in('u','s') 总视图数:select count(*) 总视图数 from sysobjects where xtype='v' 总存储过程数:select count(*) 总存储过程数 from sysobjects where

查看数据库中存在触发器的表

这次在项目中,我们为了做数据库同步,采用了触发器机制,为数据库做迁移时,我们需要获取数据库中那些表使用了触发器,方便制作数据库安装包. 构思: 触发器在MSSQL作为一个对象进行管理,那么我们就可以通过sysobjects表进行查询获取,所以我们就编写了一下触发器获取SQL SELECT object_name(a.parent_obj) as [表] ,a.name as [触发器] ,(case when b.is_disabled=0 then '使用中' else '停用' end) a

Mysql数据库中 User表权限字段说明全介绍

一:mysql权限表user字段详解: Select_priv.确定用户是否可以通过SELECT命令选择数据. Insert_priv.确定用户是否可以通过INSERT命令插入数据. Update_priv.确定用户是否可以通过UPDATE命令修改现有数据. Delete_priv.确定用户是否可以通过DELETE命令删除现有数据. Create_priv.确定用户是否可以创建新的数据库和表. Drop_priv.确定用户是否可以删除现有数据库和表. Reload_priv.确定用户是否可以执行

数据库:触发器

触发器的概念: 是用户定义在关系表上的一类有事件驱动的特殊过程.一旦定义,任何对表的增删改操作均有服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制.类似于约束,但比约束更灵活. 触发器的分类: DML触发器:DML(Data Manipulation Language)触发器是当数据库服务器中发生数据操作语言事件时执行的存储过程.DML触发器又分为两类:After触发器和Instead Of触发器 DDL触发器:DDL触发器是在响应数据定义语言(Data Definition L

Quartz将Job保存在数据库中所需表的说明

http://blog.iqbon.com/doc/364.html   (将Quartz持久化到数据库的做法) QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calendar 信息 QRTZ_CRON_TRIGGERS 存储 Cron Trigger,包括 Cron表达式和时区信息 QRTZ_FIRED_TRIGGERS 存储与已触发的 Trigger 相关的状态信息,以及相联 Job的执行信息 QRTZ_PAUSED_TRIGGER_GRPS 存储已暂停的 Trig