触发器
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
事务解析: 事务解析:
COMMIT:事务提交,永久写数据 :事务提交, ROLLBACK:事务回退 :
验证: 验证: 以用户1登录数据库,修改某张表的数据( 以用户 登录数据库,修改某张表的数据(增、删、改),不做 登录数据库 ),不做COMMIT 不做 (做COMMIT或ROLLBACK)操作,再以用户 的身份登录数据库进行查询, 或 )操作,再以用户2 的身份登录数据库进行查询, 分析结果。 分析结果。
演示: 为什么需要触发器.sql
什么是触发器 Leabharlann -1员工表 退休员工表张三 李四
赵二退休 触发器触发
王三 宋二 刘五 赵二
插入
王五
删除
赵二
什么是触发器 3-2
触发器是在对表进行插入、更新或删除操作时自 动执行的存储过程 触发器通常用于强制业务规则 触发器是一种高级约束,可以定义比用 CHECK 约束更为复杂的约束
可执行复杂的SQL语句(if/while/case) 可引用其它表中的列
什么是触发器 3-3
触发器定义在特定的表上,与表相关 自动触发执行 不能直接调用 是一个事务(可回滚)
ORACLE中触发器的类型:查资料
示例1:
CREATE OR REPLACE TRIGGER DEL_sutm AFTER DELETE ON stumarks FOR EACH ROW BEGIN DELETE FROM stuinfo WHERE stuno=:old.stuno; END del_stum;
事务的四大特性:原子性、隔离性、一致性、持久性
为什么需要触发器
为什么需要触发器(TRIGGER)呢?典型的应用就是银行的 取款机系统
帐户信息表bank 张三开户1000元, 李四开户1元
张三取钱200 问题:
最优的解决方案就是采用触发器: 交易信息表transInfo 没有自动修改张三的余额 它是一种特殊的存储过程 也具备事务的功能 它能在多表之间执行特殊的业务规则
SQL>DELETE FROM stumarks WHERE stuno=‘s25301’ 查看两张表的内容,验证触发器是否生效。
示例2:
create or replace trigger insert_stum after insert on stumarks for each row begin insert into stuinfo values('三毛',:new.stuno,'女',17,'北京'); end;
数据库触发器
是 PL/SQL 块或存储过程 是在对关联表执行 DML 操作时触发的 是隐式执行的 还可能具有声明部分和异常处理部分
自动生成数据
强制复杂的完整性约束条件
目 的
自定义复杂的安全权限
维护复制的表及审计数据修改
观点一:触发器具务事务的特征 触发器具务事务的特征 触发器具务事务
观点二:触发器是一种特殊的存 触发器是一种特殊的存 触发器是一种 储过程
SQL>UPDATE s SET sno=‘00000’ WHERE sno=‘95001’ 查看两张表的内容,验证触发器是否生效。
SQL>INSERT INTO STUMARKS VALUES(‘S271820’,’0000’,100,100) 查看两张表的内容,验证触发器是否生效。
示例3:
create or replace trigger UPDATE_s after update on s for each row begin update sc set sno=:new.sno where sno=:old.sno; end;