From 52add0698bb44e79a828ac7051a41964c94a1693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B4=8B?= <2667310859@qq.com> Date: Tue, 27 Sep 2022 20:06:35 +0800 Subject: [PATCH] =?UTF-8?q?34=E9=99=88=E6=B4=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...27\350\247\246\345\217\221\345\231\250.md" | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 "34\351\231\210\346\264\213/\347\254\224\350\256\260/0927\350\247\246\345\217\221\345\231\250.md" diff --git "a/34\351\231\210\346\264\213/\347\254\224\350\256\260/0927\350\247\246\345\217\221\345\231\250.md" "b/34\351\231\210\346\264\213/\347\254\224\350\256\260/0927\350\247\246\345\217\221\345\231\250.md" new file mode 100644 index 0000000..19f555b --- /dev/null +++ "b/34\351\231\210\346\264\213/\347\254\224\350\256\260/0927\350\247\246\345\217\221\345\231\250.md" @@ -0,0 +1,62 @@ +**一 什么是触发器** + +在SQL中,触发器(trigger)是一种**特殊类型**的存储过程,它不同于SQL的存储过程。触发器主要是**通过事件进行触发**而被执行的,而**存储过程可以通过存储过程名字**而被直接调用。当对某一表进行诸如**UPDATE、 INSERT、 DELETE** 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。 + +触发器的**主要作用**就是其能够实现由**主键和外键所不能保证的复杂**的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能: + +**二 有哪些作用** + +**(1)强化约束(Enforce restriction)** + +触发器能够实现比CHECK 语句更为复杂的约束。 + +**(2)跟踪变化(Auditing changes)** + +触发器可以侦测 [数据库](http://lib.csdn.net/base/14) 内的操作,从而不允许数据库中未经许可的指定更新和变化。 + +**(3)级联运行(Cascaded operation)** + +触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。 + +**(4)存储过程的调用(Stored procedure invocation)。** + +为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS( 数据库管理系统)本身之外进行操作。 +由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(INSERT、 UPDATE、 DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理。 + + + +三 触发器有哪几种种类 + +分为 DML触发器和DDL触发器 + +#### DML触发器 : 增删改 + +##### after触发器: + +after触发器主要用于:insert,update,delete + +##### instead of 触发器 + +**四 怎么创建触发器** + + 创建步骤 + +```sql +CREATE TRIGGER <触发器名称> + +ON table_name + +[WITH ENCRYPTION] + +FOR [DELETE, INSERT, UPDATE] + +AS + + T-SQL语句 + +GO +--WITH ENCRYPTION表示加密触发器定义的SQL文本 + +--DELETE, INSERT, UPDATE指定触发器的类型 +``` + -- Gitee