数据库笔记(SQL之触发器)
来源:互联网 发布:纤莉秀大码女装淘宝网 编辑:程序博客网 时间:2024/06/03 23:03
1 触发器概述
触发器是当数据库内容发生修改时,数据库系统自动执行的一系列语句。
对于数据库的设计,主要有三点:
1. 什么样的事件进行会被数据库进行触发器的检查。
2. 检查后什么样的条件会导致触发器的触发。
3. 触发时什么样的行为会被执行。
注意:与存储过程以及函数相同,该触发器代码是标准SQL。不同数据库系统可能有着不同的语法,实际运用时还需要看相应数据库的文档。
2 触发器触发时机
触发时机基本在进行insert、delete、update操作的时机。而这几个操作都有两个时间点,after以及before,分别表示操作进行前以及操作进行后。在声明时,除了以上两个因素之外,还要指定触发器对应的表,使用on关键词进行声明。完整时机声明示例如下:
after insert on instructor
对于update操作时机,还可以使用of关键词选择对于表的某个属性进行触发。示例如下:
after update of takes on grade
3 触发器触发条件
触发条件使用when语句来进行判断。
使用for each row来表明对于每当有行被修改时都进行判断。此时在该语句中可能会需要出现对当前进行操作的行进行命名,使用语句referencing old row as进行修改前的行的命名,referencing new row as进行修改后的行的命名。
如果需要让触发器在对某个表进行操作的SQL语句后进行触发(譬如更新语句的触发,当某个更新复数个行的更新语句进行操作之后),则使用for each statement。此时,被操作的对象成了表而不是行,需要使用referencing old table as以及referencing new table as来命名被操作的表,该表被称为临时表。
另外,使用for each statement时,若是触发实际为before,则在触发器中不能使用临时表,但是after实际可以使用。
4 触发器的完整声明
触发器的声明包括触发实际、触发条件以及触发器执行内容。其完整示例如下:
create trigger timeslot_check1 after insert on sectionreferencing new row as n_rowfor each rowwhen (n_row.time_slot_id not in( select time_slot_id from time_slot))begin rollbackend;
- 数据库笔记(SQL之触发器)
- 触发器-----------数据库(SQL)
- sql server 数据库之触发器
- sql server 2005学习笔记之触发器简介(一)
- 浅谈SQL Server 数据库之触发器
- oracle数据库PL/SQL之触发器
- Oracle数据库之PL/SQL触发器
- 关系数据库SQL之可编程性触发器
- sql数据库学习系列七之SQL Server 触发器
- Sql Server数据库触发器(转)
- SQL--数据库触发器
- SQL--数据库触发器
- sql数据库中触发器
- SQL数据库触发器
- 导图 SQL Server之数据库对象管理 之触发器管理
- SQL SERVER 学习笔记(触发器)
- sql学习笔记(21)-----------触发器
- 《MySQL入门很简单》学习笔记(9)之第9章触发器(关键词:数据库/MySQL/触发器)
- thinkphp连接多数据库
- C++整形转字符串
- MarkDown编辑器的一些使用记录
- system/WIFEXITED/WEXITSTATUS函数-linux
- Android studio环境变量配置详解
- 数据库笔记(SQL之触发器)
- js 对象判空
- vs2015/mfc加减乘除简单计算器
- 华为手机logcat不打印错误日志方法
- 使用OpenSSL生成证书,并且配置到tomcat,下载ipa
- CEF方面的研究(一) 什么是CEF?
- SparkStreaming之TCP流式处理(netcat)
- Material Design全新设计系列之Pallette
- 使用LIBSVM对原始文本语料进行文本分类(二)——特征选择(信息增益方法)