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 0000000000000000000000000000000000000000..670d28802325fb4ae9729b903991e017e4ea2e29 --- /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 0000000000000000000000000000000000000000..a6e30af10c95b743bf0941603e7cd1b4f049b119 --- /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 语句表示回滚操作。 +