当前位置:首页 » 操作系统 » 数据库表的触发器

数据库表的触发器

发布时间: 2023-03-28 15:50:38

‘壹’ 数据库中触发器是什么

数据库 触发器有什么用
触发器

触发器的定义就是说某个条件成立的时候,你触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。

然后,触发器的触发条件其实在你定义的时候就已经设定好的了。这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。详细的介绍可以参考网上的资料,简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次。

具体举例:

1. 在一个表中定义的语句级的触发器,当这个表被删除时,程序就会自动执行触发器里面定义的操作过程。这个就是删除表的操作就是触发器执行的条件了。

2. 在一个表中定义了行级的触发器,那当这个表中一行数据发生变化的时候,比如删除了一行记录,那触发器也会被自动执行了。

触发器简介:

触发器是一种特殊类型的过程。与普通过程不同的是,过程需要用户显式地调用才执行,而触发器则是当某些事件发生时,由Oracle自动执行。

触发器主要由如下几个部分组成:

触发事件:

触发条件:

触发对象:

触发操作:

编写触发器时,需要注意以下几点:

触发器不接受参数。

一个表上最多可以有12个触发器,但同一时间、同一事件、同一类型的触发器只能有一个。还需要注意,各个触发器之间不能有矛盾。

在一个表上的触发器越多,对在该表上的DML操作性能影响就越大。

触戚氏发器最大为32KB。如果确实需要,可以先建立过程,然后在触发器中用CALL语句调用。

在DML触发器中只能使用DML语句(select,insert,update,delete)。

在系统触发器中只能包含DDL语句(create,alter,drop)。

触发器中不能包含事务控制语句(mit,rollback,savepoint)。因为触发器是触发语句的一部门,触发语句被提交或回退时,触发器也就被提交或回退了。

在触发器主体中调用的任何过程、函数都不能使用事务控制语句。

在触发器主体中不能声明任何long和blob变量。新值new、旧值old也不能指向表中的任何long和blog列

不同类型的触发器(如DML触发器、INSTEAD OF触发器、系统触发器)的语法格式和作用都有较大区别。
sql中,触发器是什么?
1、触发器。 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于枝或Insert , Update , Delete 事件。(SQL Server 2000定义了新的触发器,这里不提) 我为什么要使用触发器?比如,这么两个表: Create Table Student( --学生表 StudentID int primary key, --学号 .... ) Create Table BorrowRecord( --学生借书记录表 BorrowRecord int identity(1,1), --流水号 StudentID int , --学号 BorrowDate datetime, --借出时间 ReturnDAte Datetime, --归还时间 ... ) 用到的功能有: 1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记猛仔伍录表的学号); 2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。 等等。 这时候可以用到触发器。对于1,创建一个Update触发器: Create Trigger truStudent On Student for Update ------------------------------------------------------- --Name:truStudent --func:更新BorrowRecord 的StudentID,与Student同步。 --Use :None --User:System --Author: 懒虫 # SapphireStudio ( chair3) --Date : 2003-4-16 --Memo : 临时写写的,给大家作个Sample。没有调试阿。 ------------------------------------------------------- As if Update(StudentID) begin Update BorrowRecord Set br.StudentID=i.StudentID From BorrowRecord br , Deleted d ,Inserted i Where br.StudentID=d.StudentID end 理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示......>>
请问数据库 触发器有什么用
我就给你解释一下实际场景吧

比如你有两个表 A 和 B

A表有ID 和 NAME两列

B表有ID,PLAY,NAMEID三列,A与B没有关联

如果你想删除B表的内容,但是又同时想删除A表中A.ID=B.NAMEID

那么你就要写两条语句

如果使用触发器

就只用写删除B表的内容语句,一旦删除内容,则触发器设定的表规则被触发,那么A表的相关内容也一起删除了
SQL中触发器有什么作用
当你对表进行了添删改查等操作时,如果你需要做一些特定的业务操作,就可以使用触发器。

顾名思义,触发,当你做了某种预设的操作时才会执行触发器的命令

举个例子。。

假设你有个员工基础信息表,里面有员工的身份证号码,手机等基本信息。。

那么,当你换了身份证或手机,需要修改号码的时候,肯定是去修改员工的基础资料表。

假设你现在有别的地方,比如人事档案啊之类的,同样使用了员工的手机等信息。。难道你还要再去修改一次档案表么。。那么如果还有其他地方使用了呢?

而触发器就可以在这种时候做出判断,如果修改了基础表的信息,那么就同步把其他使用了基础表信息的地方也更改成最新的信息。。

大概就是这么个意思。。当然还有其他的作用
数据库中替代触发器的定义是什么 5分
(1)DML触发器:是指触发器在数据库中发生数据操作语言(DML)事件时将启用。DML事件即指在表或视图中修改数据的insert、update、delete语句也。 (2)DDL触发器:是指当服务器或数据库中发生数据定义语言(DDL)事件时将启用。DDL事件即指在表或索引中...
数据库中的触发器重点在什么地方?
简单来讲哪就是事件触发。

比如你对数据库中的表进行了一个插删等操作,你想在你即将做或者完成这个操作的时候程序能自动做一点别的工作,比如你想对插入数据检查一下或者对删除后的数据总数进行一下统计。

本来哪,你可以把这个工作写在自己的程序里,就是把检查写在你插入动作之前或者把统计数目写在删除动作之后。这样的问题是:你要做插删的时候就都要写这些代码,而且很容易就遗漏了。

而触发器哪,你定义在某个操作上,比如把那个检查的工作过程定义成插入的前触发器,把统计工作定义成后触发器,那么在你进行插入删除的时候,数据库那边的程序就自动的给你做了这个工作了。

主要作用哪:我感觉

一是完整性(防止自己编程的遗漏),

二是简单,

三是由数据库程序(比如Oracle)进行这项工作,而不是由你自己的程序做,效率高。

下面是人家的一些教程,其实道理是很简单的。你可以用它后面讲的几个数据库的例子,自己写一个,试试就知道了。

————————————————————————————————————————

一 触发器介绍

触发器是一种特殊的存储过程,它在插入,删除或修改特定表中

的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的

数据控制能力。数据库触发器有以下的作用:

* 安全性。可以基于数据库的值使用户具有操作数据库的某种权

利。

# 可以基于时间限制用户的操作,例如不允许下班后和节假日

修改数据库数据。

# 可以基于数据库中的数据限制用户的操作,例如不允许股票

的价格的升幅一次超过10%。

* 审计。可以跟踪用户对数据库的操作。

# 审计用户操作数据库的语句。

# 把用户对数据库的更新写入审计表。

* 实现复杂的数据完整性规则。

# 实现非标准的数据完整性检查和约束。触发器可产生比规则

更为复杂的限制。与规则不同,触发器可以引用列或数据库对

象。例如,触发器可回退任何企图吃进超过自己保证金的期货。

# 提供可变的缺省值。

* 实现复杂的非标准的数据库相关完整性规则。触发器可以对数

据库中相关的表进行连环更新。例如,在auths表author_code列上的

删除触发器可导致相应删除在其它表中的与之匹配的行。

# 在修改或删除时级联修改或删除其它表中的与之匹配的行。

# 在修改或删除时把其它表中的与之匹配的行设成NULL值。

# 在修改或删除时把其它表中的与之匹配的行级联设成缺省值。

# 触发器能够拒绝或回退那些破坏相关完整性的变化,取消试

图进行数据更新的事务。当插入一个与其主健不匹配的外部键

时,这种触发器会起作用。例如,可以在books.author_code

列上生成一个插入触发器,如果新值与auths.author_code列

中的某值不匹配时,插入被回退。

* 同步实时地复制表中的数据。

* 自动计算数据值,如果数据的值达到了一定的要求,则进行特

定的处理。例如,如果公司的帐号上的资金低于5万元则立即给财务人

员发送警告数据。

ORACLE与SYBASE数据库的触发器有一定的区别,下面将分别讲述

这两种数据库触发器的作用和写法。

二 ORACLE 触发器

ORACLE产生数据库触发器的语法为......>>
数据库触发器中new表和old表是什么意思?
顾名思义,new是新插入的数据,old是原来的数据

insert只会有new,代表着要插入的新记录

delete只会有old,代表着要删除的记录

update由于执行的是先删除旧的记录,再插入新的记录,因此new和old都会有,且含义与上面的相同
SQL数据库中的触发器怎么写啊?急
CREATE TRIGGER trig_stu_update ON student

FOR UPDATE

AS

begin

end;

CREATE TRIGGER trig_stu_delete O功 student

FOR DELETE

AS

begin

end;

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

上面是更新、删除的触发器模板,将你的代码填在begin...end之间。

触发器中经常用到的inserted,deleted。

inserted里面存放了insert、update操作的插入值或更新后值。

deleted里存放的是update、delete操作的更新前值或删除值。

使用方法:

declare @no int,@sex bit,@age int;

--insert、update取新值

select @no=no,@sex=sex,@age=age from inserted;

--delete、update删除值

select @no=no,@sex=sex,@age=age from deleted;
sql的触发器是干什么的,怎么用?
触发器的主要作用是,实现由主键和外键所不能保证的复杂的参照完整性和数据一致性。

例如我们日常生活中常用的银行存储系统就应用了触发器机制:当我们在银行办理存款或是取款业务后,系统除了会记录我们的交易信息外,还会根据我们存入或取出的金额自动更新我们帐户的余额(存款操作后增加帐户余额,取款操作后减少帐户余额),当操作中出现意外情况(如断电),系统还会回滚我们所做的操作,以保证交易的完整性。

所以触发器是在对表进行插入、更新和删除操作时自动执行的存储过程,同时它也具有事务的功能(整个操作要么全部成功,要么全部失败)。

‘贰’ SQL中的“触发器”是什么

触发器是对表进行插入、更新、删除的时候会自动执行的特殊存储过程。x0dx0ax0dx0a触发器一般用在check约束更加复杂的约束上面。例如在执行update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。x0dx0ax0dx0aSQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create、alter、drop语句。 x0dx0ax0dx0a DML触发器分为: x0dx0a 1、 after触发器(之后触发) x0dx0a a、 insert触发器 x0dx0a b、 update触发器 x0dx0a c、 delete触发器 x0dx0a 2、 instead of 触发器 (之前触发) x0dx0ax0dx0a其中after触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。而instead of触发器表示并不执行其定义的操作(insert、update、delete)而仅是执行触发器本身。既可以在表上定义instead of触发器,也可以在视图上定义。 x0dx0ax0dx0a触发器有两个特殊的表:插入表(instered表)和删除表(deleted表)。这两张是逻辑表也是虚表。有系统在内存中创建者两张表,不会存储在数据库中。而且两张表的都是只读的,只能读取数据而不能修改数据。这两张表的结果总是与被改触发器应用的表的结构相同。当触发器完成工作后,这两张表就会被删除。Inserted表的数据是插入或是修改后的数据,而deleted表的数据是更新前的或是删除的数据。x0dx0ax0dx0aUpdate数据的时候就是先删除表记录,然后增加一条记录。这样在inserted和deleted表就都有update后的数据记录了。注意的是:触发器本身就是一个事务,所以在触发器里面可以对修改数据进行一些特殊的检查。如果不满足可以利用事务回滚,撤销操作。

‘叁’ 数据库触发器是什么

触发器是一类特殊的存储过程,被定义为在对表或视图发出 UPDATE、INSERT 或 DELETE 语句时自动执行。触发器是功能强大的工具,使每个站点可以在有数据修改时自动强制执行其业务规则。触发器可以扩展 SQL Server 约束、默认值和规则的完整性检查逻辑,但只要约束和默认值提供了全部所需的功能,就应使用约束和默认值。

表可以有多个触发器。CREATE TRIGGER 语句可以与 FOR UPDATE、FOR INSERT 或 FOR DELETE 子句一起使用,指定触发器专门用于特定类型的数据修改操作。当指定 FOR UPDATE 时,可以使用 IF UPDATE (column_name) 子句,指定触发器专门用于具体某列的更新。

代码是写在数据库里面的,触发器包含 Transact-SQL 语句,这与存储过程十分相似。

如果你有安装SQL SEVER,那么你可以在SQL SEVER的帮助文档里找到很多详细的解析,打开查询分析器按F1也可以打开SQL SEVER的帮助文档。

示例
下例首先创建一个触发器,当用户在表 roysched 中添加或更改数据时,该触发器向客户端打印一条用户定义消息。然后,使用 ALTER TRIGGER 语句使该触发器仅对 INSERT 活动有效。该触发器有助于提醒向表中插入行或更新行的用户及时通知书的作者和出版商。

USE pubs
GO
CREATE TRIGGER royalty_reminder
ON roysched
WITH ENCRYPTION
FOR INSERT, UPDATE
AS RAISERROR (50009, 16, 10)

-- Now, alter the trigger.
USE pubs
GO
ALTER TRIGGER royalty_reminder
ON roysched
FOR INSERT
AS RAISERROR (50009, 16, 10)

‘肆’ 数据库触发器是什么

表可以有多个触发器。CREATE
TRIGGER
语句可以与
FOR
UPDATE、FOR
INSERT

FOR
DELETE
子句一起使用,指定触发器专门用于特定类型的数据修改操作。当指定
FOR
UPDATE
时,可以使用
IF
UPDATE
(column_name)
子句,指定触发器专门用于具体某列的更新。
代码是写在数据库里面的,触发器包含
Transact-SQL
语句,这与存储过程十分相似。
如果你有安装SQL
SEVER,那么你可以在SQL
SEVER的帮助文档里找到很多详细的解析,打开查询分析器按F1也可以打开SQL
SEVER的帮助文档。

‘伍’ 数据库中触发器的作用是什么

触发器是数据库提供给程序员和数据分析员来保证数据完整性的一种机制,它是一种与数据表事件相关的特殊的存储过程。触发器的执行不是由程序调用,也不需要手工开启,而是由数据表上的事件来触发,当用户对一个数据表进行增、删、改操作时就会激活它执行。

触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。

触发器功能强大,可以轻松可靠地实现许多复杂的功能,但也不能过于依赖触发器,滥用触发器会造成关系数据库及应用程序维护困难,性能、效率低下等问题的产生,在实际问题中,要根据实际需要选择合适的解决方案。触发器是一种特殊的存储过程,在插入、删除、修改特定表中的数据时触发执行,拥有比数据库本身更强大的数据控制能力,其作用有以下四大方面。

1.数据安全数据安全主要是指对信息系统中的业务数据提供一种数据变更的审核机制,当其通过安全策略的审核后,允许用户变更相关数据,否则直接拒绝数据变更的请求。

安全原理:基于数据库的值使用户具有操作数据库的某种权利。

((1)可以基于时间限制用户的操作。例如,不允许下班后和节假日修改数据库数据。

(2)可以基于数据库中的数据限制用户的操作。例如,不允许股票价格的升幅一次超过10%。

2.数据审计数据审计主要是指对数据服务器上的记录进行变更时的一种用户权限的即时审查与用户行为的全方位记录,以便事后对数据变更过程的追溯,保证数据变更的合法性。

审计原理:跟踪用户对数据库的操作。

((1)审计用户操作数据库的语句。

(2)把用户对数据库的更新写入审计表。

3.数据约束数据约束是指对用户的操作行为将导致业务数据与实际情况相悖的行为进行检查约束,而不让其发生,从而保证数据的完整性与一致性。

约束原理:对用户操作与实际逻辑的约束检查。

((1)实现数据完整性检查和约束。例如,回退任何企图买进超过自己资金的货物。

(2)提供可变的缺省值。

4.数据连环更新数据连环更新是指当对数据进行更新操作时,将所有与此数据相关联的数据作联合的更新操作,以保证数据的完整性与一致性。

连环更新原理:对关联数据作联合更新操作。

((1)修改或删除时级联修改或删除其他表中与之匹配的行。

(2)修改或删除时把其他表中与之匹配的行设成NULL值。

(3)修改或删除时把其他表中与之匹配的行级联设成缺省值。

‘陆’ 数据库触发器有什么作用

触发器的作用:

自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。

同步实时地复制表中的数据。

实现复杂的非标准的数据库相关完整性规则。

可在写入数据表前,强制检验或转换数据。

触发器发生错误时,异动的结果会被撤销。

部分数据库管理系统可以针对数据定义扒棚唤语言(DDL)使用触发器,称为DDL触发器。

可依照特定的情况,替换异动的指令 (INSTEAD OF)。


(6)数据库表的触发器扩展阅读:

分类

SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。

DML触发器

当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。

DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约和和束同一个表中的数据,而触发器中则可以执行任意Sql命令。

DDL触发器

它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。

它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。

登录触发器

登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。

因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登春凯录触发器。

参考资料来源:网络-触发器

‘柒’ 在数据库里怎么使用触发器

触发器是一类特殊的存储过程,开发人员也可以定义、编写符合业务需求的触发器来维护数据的完整性。触发器的控制流程及控制语句与存储过程相同,但触发器与存储过程还是有相当大的差别,触发器的定义格式及开启方式与存储过程不同,作为数据管理员或编程人员,熟练掌握触发器的用法对维护、操作数据库非常重要。基本语法1.创建触发器语法格式创建语法:CREATETRIGGER+触发器名称+触发时间点+触发事件+ON+表名+FOREACHROWBEGIN…END其中,触发时间点:BEFORE或AFTER,指明是在触发事件之前还是之后执行。

触发事件:INSERT、UPDATE、DELETE事件。例如,以下语句创建一个名字叫upd_check的触发器,其在对account表作更新(UPDATE)操作之前(BEFORE)自动触发。

CREATETRIGGERupd_…END2.删除触发器语法格式DROPTRIGGER+触发器名称3.触发器案例用tab.sql脚本创建表环境,然后用下面语句创建触发器。当往tab1表添加记录后将触发此触发器,将此新记录同时插入tab2表中。

DELIMITER//DROPTRIGGERIFEXISTSt_afterinsert_on_tab1;CREATETRIGGERt_afterinsert_on_(tab2_id)values(new.tab1_id);END;//DELIMITER;当用下面语句往tab1表插入记录时,tab2表中同时也添加了同样的记录,如图tab1数据表

tab1数据表

tab2数据表

INSERTINTOtab1(tab1_id)values(񟍱')

tab.sql

热点内容
工伤辅助器如何配置 发布:2025-05-20 00:25:13 浏览:600
opencv存储图片 发布:2025-05-20 00:16:10 浏览:952
ug编程链轮 发布:2025-05-20 00:14:03 浏览:99
手机锁屏壁纸配置失败怎么解决 发布:2025-05-20 00:10:38 浏览:756
源码编译的软件怎么卸载 发布:2025-05-20 00:05:29 浏览:488
access脚本 发布:2025-05-19 23:38:54 浏览:219
硬盘内存储盘材质 发布:2025-05-19 23:38:53 浏览:716
五台电脑服务器配置 发布:2025-05-19 23:33:05 浏览:277
苹果爱奇艺后台缓存 发布:2025-05-19 23:32:01 浏览:60
perl复制文件夹 发布:2025-05-19 23:31:19 浏览:294