数据库学习13-触发器
来源:互联网 发布:手机视频恢复软件 编辑:程序博客网 时间:2024/06/02 03:27
触发器
1.触发器是什么?与过程和函数的不同(事件触发)
触发器是一种特殊的存储过程;
2.分类
2.1 DML级
2.1.1 行级
2.1.2 语句级
2.1.3 instead of触发器
a 只能被创建在视图上,并且该视图没有指定WITH CHECK OPTION选项。
b 不能指定BEFORE 或 AFTER选项。
c FOR EACH ROW子句是可选的,即INSTEAD OF触发器只能在行级上触发、或只能是行级触发器,没有必要指定。
d 没有必要在针对一个表的视图上创建INSTEAD OF触发器,只要创建DML触发器就可以了。
2.2 DDL级
2.3 数据库级
注:一个表最多12个触发器(12类),同一时间,同一事件,同一类型的触发器只能有一个;触发器影响表的dml操作效率;触发器最大32k;
--当删除员工时,移到历史员工 (也可以调用存储过程)
--当操作部门表或员工表时判断是否是平时的上班时间
--部门30中的员工薪水和奖金不能降,员工不能离职
1.触发器是什么?与过程和函数的不同(事件触发)
触发器是一种特殊的存储过程;
2.分类
2.1 DML级
2.1.1 行级
2.1.2 语句级
2.1.3 instead of触发器
a 只能被创建在视图上,并且该视图没有指定WITH CHECK OPTION选项。
b 不能指定BEFORE 或 AFTER选项。
c FOR EACH ROW子句是可选的,即INSTEAD OF触发器只能在行级上触发、或只能是行级触发器,没有必要指定。
d 没有必要在针对一个表的视图上创建INSTEAD OF触发器,只要创建DML触发器就可以了。
2.2 DDL级
2.3 数据库级
注:一个表最多12个触发器(12类),同一时间,同一事件,同一类型的触发器只能有一个;触发器影响表的dml操作效率;触发器最大32k;
--当删除员工时,移到历史员工 (也可以调用存储过程)
--当操作部门表或员工表时判断是否是平时的上班时间
--部门30中的员工薪水和奖金不能降,员工不能离职
/*1.定义一个函数,输入员工编号, 返回emp表中员工的工作年限;*/CREATE OR REPLACE FUNCTION fun_gethire(e_id NUMBER) RETURN NUMBERIS h DATE;BEGIN SELECT hiredate INTO h FROM emp WHERE empno= e_id; RETURN trunc((SYSDATE-h)/365,2);EXCEPTION WHEN OTHERS THEN raise_application_error(-20111,'fun_gethire函数出错了');END fun_gethire;SELECT fun_gethire('7839') FROM dual;/*2.定义一个过程,完成插入dept表数据时,同时插入emp表数据,并通过out参 数接收新的部门id;*/CREATE OR REPLACE PROCEDURE pro_a(d_id OUT dept.deptno%TYPE)ISBEGIN SELECT (MAX(deptno)+10) INTO d_id FROM dept; INSERT INTO dept(deptno,dname) VALUES(d_id,'新部门'); INSERT INTO emp(empno,ename,deptno) VALUES(8888,'test',d_id); COMMIT;END pro_a;DECLARE a NUMBER;BEGIN pro_a(a); dbms_output.put_line('新部门id:'||a);END;SELECT * FROM emp,dept WHERE emp.deptno=dept.deptno AND emp.deptno=50;
0 0
- 数据库学习13-触发器
- Oracle数据库学习13之触发器
- 数据库学习四:触发器
- 数据库学习之触发器
- oracle数据库触发器学习
- 数据库学习之触发器
- 数据库学习笔记-触发器
- 数据库学习笔记 --- 触发器原理学习
- MYSQL数据库学习----索引和触发器
- 数据库学习笔记触发器和常用函数
- 【数据库摘要】13_Sql_触发器
- 数据库触发器
- 数据库触发器
- 数据库触发器
- 数据库触发器
- 数据库触发器
- 数据库触发器
- 数据库触发器
- Hashset删除部分数据
- 静态数组的索引越界问题
- 初次见面
- 浅谈HTTP中Get与Post的区别
- LeetCode | Swap Nodes in Pairs(将链表中的元素两两交换)
- 数据库学习13-触发器
- netlink学习笔记(一)
- GPT HDD识别
- ubuntu 安装Zend Studo 后不能安装插件
- 数据库学习14-回顾
- Hibernate二级缓存详解
- 替换文件中指定内容
- CRC校验
- java 实现文件复制的两种方式