oracle 11g实验五——触发器的使用
来源:互联网 发布:中国制造业数据pmi 编辑:程序博客网 时间:2024/04/26 05:03
实验要求:
实验五 触发器的使用
实验目的
1、 理解触发器的概念、作用及分类;
2、 掌握触发器的创建、使用;
实验内容
1、 建立表orders:用于存储订单列表信息;表order_items:用于存储单个订单的详细信息。其结构分别为:
表1 orders表结构
字段名
字段类型
字段宽度
说明
id
NUMBER
20
订单编号(主键)
order_date
Date
订单日期(非空)
user_name
VARCHAR2
10
客户名称(非空)
city
VARCHAR2
20
客户所在城市(默认沈阳)
表2 order_items表结构
字段名
字段类型
字段宽度
说明
order_id
NUMBER
20
订单编号(主键)
product_NAME
VARCHAR2
20
产品名称(非空)
quantity
NUMBER
4
数量(大于0,小于100)
unit_price
NUMBER
(10,2)
产品单价
2、 创建触发器,将用户对orders表的修改,保存到日志表(自己创建)中。
3、 测试触发器。
4、 创建触发器,限制只有scott用户可以修改表orders。
5、 测试触发器。
6、 删除触发器。
7、 创建用户签订订单详细信息视图view_user_order,包括用户名、订单号、商品名、数量、单价。
8、 创建触发器,实现更新视图,更新及表数据。
9、 测试触发器。
10、删除触发器。
实验答案:
--创建orders表create table orders( id NUMBER(20) PRIMARY KEY NOT NULL, order_date date not null, user_name varchar2(10) not null, city varchar2(20) default '沈阳');--创建order_items表create table order_items( order_id number(20) primary key, product_NAME varchar2(20) not null, quantity number(4) check(quantity BETWEEN 0 AND 100), unit_price number(10,2));--2、创建触发器,将用户对orders表的修改,保存到日志表(自己创建)中。--日志表CREATE TABLE T_LOG ( RID VARCHAR2(32), NAME VARCHAR2(1000), RQ DATE DEFAULT sysdate, OLDVALUE VARCHAR2(255), NEWVALUE VARCHAR2(255) ); --目标表create table orders( id NUMBER(20) PRIMARY KEY NOT NULL, order_date date not null, user_name varchar2(10) not null, city varchar2(20) default '沈阳');CREATE OR REPLACE TRIGGER order_loggin AFTER UPDATE ON orders REFERENCING NEW AS New OLD AS Old FOR EACH ROW DECLARE BEGIN if :new.city<>:old.city then insert into T_LOG (rid,name,newvalue,oldvalue) values(:new.id,'城市', :new.city , :old.city); end if; if :new.user_name<>:old.user_name then insert into t_log (rid,name,newvalue,oldvalue) values(:new.id,'姓名',:new.user_name,:old.user_name); end if; if :new.order_date<>:old.order_date then insert into t_log (rid,name,newvalue,oldvalue) values(:new.id,'订单日期',:new.order_date,:old.order_date); end if; END order_loggin; --3、测试触发器。update orders set user_name='213456' where id='1';SELECT * from t_log;--4、创建触发器,限制只有scott用户可以修改表orders。create or replaceTRIGGER alter_orderBEFORE INSERT or UPDATE or DELETE ON orders declare user_name VARCHAR2(30);BEGINselect user into user_name FROM dual;if(lower(user_name)<>'scott') THEN RAISE_APPLICATION_ERROR(-20001,'改用户不能修改orders表'); END IF; END alter_order;--5、测试触发器。update orders set user_name='111' where id='1';--6、删除触发器。DROP TRIGGER alter_order;create table orders( id NUMBER(20) identified(1,1) PRIMARY KEY NOT NULL, order_date date not null , user_name varchar2(10) not null, city varchar2(20) default '沈阳');create table order_items( order_id number(20) primary key, product_NAME varchar2(20) not null, quantity number(4) check(quantity BETWEEN 0 AND 100), unit_price number(10,2));--7、创建用户签订订单详细信息视图view_user_order,包括用户名、订单号、商品名、数量、单价。 create or replace VIEW view_user_orderas select user_name,order_id,product_NAME,quantity,unit_price from order_items join orders on(order_items.order_id=orders.id);--测试SELECT * FROM view_user_order;--8、创建触发器,实现更新视图,及更新表数据。create or replaceTRIGGER view_user_order_trigger INSTEAD OF INSERT ON view_user_order FOR EACH ROW BEGIN INSERT INTO orders(id,user_name) values(:new.order_id,:new.user_name); INSERT INTO order_items(order_id, product_NAME, quantity,unit_price) VALUES(:new.order_id, :new.product_NAME, :new.quantity, :new.unit_price);END view_user_order_trigger;--9、测试触发器。insert into view_user_order values('12310',4,'电话',20,1500);insert into view_user_order values('12311',5,'电话',20,1500);--10、删除触发器。DROP TRIGGER view_user_order_trigger;
0 0
- oracle 11g实验五——触发器的使用
- 【Oracle 11g】我们的触发器竟然触发了两次!——诱因:sql重启动
- 触发器、存储过程的建立与使用—实验报告
- Oracle触发器的使用
- Oracle触发器的使用
- oracle触发器的使用
- Oracle触发器的使用!
- oracle触发器的使用
- Oracle 由易到难源代码五 触发器使用大全
- oracle 11g logminer实验
- oracle 11g logminer实验
- Oracle 11g 触发器新增功能
- Oracle 11g 触发器新增功能
- Oracle基础知识(五) - 触发器的分类:DML触发器
- Oracle学习笔记——触发器使用
- oracle 数据库触发器的使用
- oracle触发器trigger的使用
- oracle中触发器的使用
- android:launchMode="singleTask" intent获取到的值没有更新
- 异常类的处理
- 如何防止表单重复提交
- Andorid游戏2048开发(一)
- linux时间函数
- oracle 11g实验五——触发器的使用
- 网站建设合同案例——知化园公司网站建设合同
- Java小例子——穷举质数,求平方和,求质因子。
- asp.net使用MVC4框架基于NPOI做导出数据到Excel表
- Android开发中activity切换动画的实现
- C# 文件重命名
- 30类CSS选择器 你必须记在脑袋里
- Weblogic企业级运维实战
- 让此生相识,情暖一生