From c514d7a1afb0be2191234981e766636e0f1fe91d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A9=B9=E6=BA=90=E9=93=A0?= <1905540517@qq.com> Date: Wed, 28 Sep 2022 23:08:51 +0800 Subject: [PATCH] bj --- ...27\350\247\246\345\217\221\345\231\250.md" | 27 +++++++++++++++++++ .../\347\254\224\350\256\260/9.28update.md" | 17 ++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 "23\350\251\271\346\272\220\351\223\240/\347\254\224\350\256\260/9.27\350\247\246\345\217\221\345\231\250.md" create mode 100644 "23\350\251\271\346\272\220\351\223\240/\347\254\224\350\256\260/9.28update.md" diff --git "a/23\350\251\271\346\272\220\351\223\240/\347\254\224\350\256\260/9.27\350\247\246\345\217\221\345\231\250.md" "b/23\350\251\271\346\272\220\351\223\240/\347\254\224\350\256\260/9.27\350\247\246\345\217\221\345\231\250.md" new file mode 100644 index 0000000..670d288 --- /dev/null +++ "b/23\350\251\271\346\272\220\351\223\240/\347\254\224\350\256\260/9.27\350\247\246\345\217\221\345\231\250.md" @@ -0,0 +1,27 @@ +``` +## 触发器 + + **触发器**( trigger )是作为**对数据库修改的连带效果**而**由系统自动执行**的一条语句。它是一种特殊的**存储过程**。也是一个**事务**(可以回滚)。为了定义一个[触发器](https://so.csdn.net/so/search?q=触发器&spm=1001.2101.3001.7020),我们必须: + +- 指明**什么时候执行触发器**。这被拆分为**引起触发器被检测的一个\*事件\***和**触发器继续执行所必须满足的一个条件**。 +- 指明**当触发器执行时所采取的动作**。 + +#### 触发器分类 + +分为 DML触发器和DDL触发器 + +#### DML触发器 : 增删改 + +#### after触发器: insert,update,delete + +### instead of 触发器 + +#### 触发器的创建 + +```sql +go +create trigger 触发名 +on 表名 (after:执行后) (inserted,deleted,updated) +as +go +``` \ No newline at end of file diff --git "a/23\350\251\271\346\272\220\351\223\240/\347\254\224\350\256\260/9.28update.md" "b/23\350\251\271\346\272\220\351\223\240/\347\254\224\350\256\260/9.28update.md" new file mode 100644 index 0000000..a6e30af --- /dev/null +++ "b/23\350\251\271\346\272\220\351\223\240/\347\254\224\350\256\260/9.28update.md" @@ -0,0 +1,17 @@ +**UPDATE触发器** +当触发器涉及对触发表自身的更新操作时,只能用BEFORE UPDATE 触发器,而AFTER UPDATE触发器将不被允许。 +(1)语法格式 +CREATE TRIGGER t_UPDATE +ON+信息表 +for update +as +if (update(列信息) or update(列信息)) +begin +print‘事务不能被处理,基础数据不能修改!’ +POLLBACK TRANSACTION +end +else +print’数据修改成功’ + +注:当提示 “ print‘事务不能被处理,基础数据不能修改!’ ”时,我们就需要用批处理语句回滚整个事务。此时就可以用POLLBACK TRANSACTION 语句表示回滚操作。 + -- Gitee