怎么写对应View的Trigger

zzymouse 2003-09-26 11:43:49
我有一个视图View_Emp,抓4个Table的资料,我想建立一个对应View_Emp的Trigger,只要Table变化,View_Emp跟着变,只要View_Emp一变,便触发Trigger,写入到另外一个Table一些日志资料,请问视图需要加什么参数,就是在视图上怎么触发
...全文
109 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-09-28
  • 打赏
  • 举报
回复
Creating an INSTEAD OF Trigger: Example
In this example, an oe.order_info view is created to display information about customers and their orders:

CREATE VIEW order_info AS
SELECT c.customer_id, c.cust_last_name, c.cust_first_name,
o.order_id, o.order_date, o.order_status
FROM customers c, orders o
WHERE c.customer_id = o.customer_id;


Normally this view would not be updatable, because the primary key of the orders table (order_id) is not unique in the result set of the join view. To make this view updatable, create an INSTEAD OF trigger on the view to process INSERT statements directed to the view (the PL/SQL trigger implementation is shown in italics):

CREATE OR REPLACE TRIGGER order_info_insert
INSTEAD OF INSERT ON order_info
DECLARE
duplicate_info EXCEPTION;
PRAGMA EXCEPTION_INIT (duplicate_info, -00001);
BEGIN
INSERT INTO customers
(customer_id, cust_last_name, cust_first_name)
VALUES (
:new.customer_id,
:new.cust_last_name,
:new.cust_first_name);
INSERT INTO orders (order_id, order_date, customer_id)
VALUES (
:new.order_id,
:new.order_date,
:new.customer_id);
EXCEPTION
WHEN duplicate_info THEN
RAISE_APPLICATION_ERROR (
num=> -20107,
msg=> 'Duplicate customer or order ID');
END order_info_insert;
/

supkim 2003-09-28
  • 打赏
  • 举报
回复
关注
hdkkk 2003-09-27
  • 打赏
  • 举报
回复
INSTEAD OF Triggers
birdinrain 2003-09-27
  • 打赏
  • 举报
回复
算搞了比较长时间数据库开发管理之类的了。却还没有做过Trigger。
因为Trigger比较耗资源(我们的数据都是上亿级别的,pm因此对Trigger深恶痛绝),所以一切都在存储过程,程序包里面搞定。

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧