【发布时间】:2020-02-08 12:10:30
【问题描述】:
我的看法是:
select * from ot.vw_rebellionrid;
这是给我看的:
full_name 是trainer 表的列
subject_name 是 subject 表的列
视图有查询:
SELECT full_name, subject_name
FROM ot.trainer, ot.subject;
所以,我正在学习instead of delete tigger,所以instead of trigger的代码是:
CREATE OR REPLACE TRIGGER ot.io_delete
INSTEAD OF DELETE ON ot.vw_RebellionRid
FOR EACH ROW
BEGIN
DELETE FROM ot.trainer WHERE FULL_NAME = :old.FULL_NAME;
DELETE FROM ot.subject WHERE SUBJECT_NAME= :old.SUBJECT_NAME;
END;
/
所以,要执行这个触发器,我执行以下语句:
delete from ot.vw_RebellionRid where subject_name='java';
当它被执行时,那么:
2 rows deleted.
根据我的理解,由于这两行有subject_name作为java剩下的输出,我想会在删除之后:
--------------------------
full_name | subject_ name |
---------------------------
Manish Sharma Oracle |
ashwin Oracle |
---------------------------
但是当我执行时
select * from ot.vw_RebellionRid ;
然后,我得到了 EMPTY TABLE 的输出;
因为,有 4 行,2 行被删除,但是当我再次选择视图时,我如何得到空表?我应该得到剩下的两行。
【问题讨论】:
标签: database oracle plsql oracle11g