From 0c36944cc93cb12290d816231254267f7c8aefa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=98=8A=E7=AB=A5?= <10033735+Harshreich@user.noreply.gitee.com> Date: Mon, 10 Oct 2022 09:19:31 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陈昊童 <10033735+Harshreich@user.noreply.gitee.com> --- .../\344\275\234\344\270\232/22.10.10.sql" | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 "10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/22.10.10.sql" diff --git "a/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/22.10.10.sql" "b/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/22.10.10.sql" new file mode 100644 index 0000000..5cef6fc --- /dev/null +++ "b/10\351\231\210\346\230\212\347\253\245/\344\275\234\344\270\232/22.10.10.sql" @@ -0,0 +1,38 @@ +select * from Department +select * from People +go +--1вűԱԱʱ򣬸ԱIJű +-- ڲűҲԶӲϢΪ"²" +create trigger tri_departmentName +on people for insert +as +declare @dep_id varchar(5) + select @dep_id=DepartmentId from inserted + if(@dep_id not in (select DepartmentId from Department)) + begin + insert into Department values(@dep_id,'²') + end + go + + insert into People values('003','','',3364) + +-- drop trigger tri_departmentName +go +--2ʵ֣ɾһŵʱ򽫲Աȫɾ +create trigger tri_depdelete +on department for delete +as + delete from People where DepartmentId=(select DepartmentId from deleted) + go +delete from Department where DepartmentId='003' +drop trigger tri_depdelete +go +--4޸һű֮󣬽òԱIJűͬ޸ +create trigger tri_update +on department for update +as + update People set DepartmentId=(select DepartmentId from inserted) + where DepartmentId=(select DepartmentId from deleted) + go +update Department set DepartmentId='003' where DepartmentId='001' +drop trigger tri_update \ No newline at end of file -- Gitee From 3f237c6edb653c9ce635bd798c44061bca0a178c Mon Sep 17 00:00:00 2001 From: Harshreich <773407390@qq.com> Date: Tue, 11 Oct 2022 16:32:56 +0800 Subject: [PATCH 2/2] . --- .../\347\254\224\350\256\260/22.10.10.md" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 "10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.10.10.md" diff --git "a/10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.10.10.md" "b/10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.10.10.md" new file mode 100644 index 0000000..2044fe9 --- /dev/null +++ "b/10\351\231\210\346\230\212\347\253\245/\347\254\224\350\256\260/22.10.10.md" @@ -0,0 +1,47 @@ +### SQL触发器的使用及语法 + +##### 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 + +常见的触发器有三种DML触发器 : 增删改 + +after触发器( 增删改 之后执行的 ) + +after触发器主要用于(insert,update,delete) + +instead of 触发器 (增删改 之前检查的) + +##### + + **触发器**( trigger )是作为**对数据库修改的连带效果**而**由系统自动执行**的一条语句。它是一种特殊的**存储过程**。也是一个**事务**(可以回滚) + +##### 操作: + +```sql +CREATE TRIGGER <触发器名称> + +ON table_name +FOR [DELETE, INSERT, UPDATE] + +AS + + T-SQL语句 (inserted,deleted,update没有upadated) + +GO +--WITH ENCRYPTION表示加密触发器定义的SQL文本 + +--DELETE, INSERT, UPDATE指定触发器的类型 +``` + + + + 1.插入操作(Insert) +inserted 表示插入后的数据 + +2.删除操作(Delete) +deleted 表示删除后的数据 + +3.更新操作(Update) + +update 没有updated 所以用inserted表示新数据,deleted表示旧数据 + +***\*inserted 表\****有数据(新数据),***\*deleted 表\****有数据(旧数据) \ No newline at end of file -- Gitee