oracle 12c测试视图上的触发器

时间:2017-04-01 15:17:27

标签: oracle sqlplus

我使用以下代码在Oracle 12c中创建了视图:

CREATE VIEW ConcertView AS
SELECT a.ConcertNo, a.Concert_Name, a.Price, a.Duration, a.City, b.EventDate, b.Even t_Name
FROM Concert a,Events b 
WHERE a.ConcertNo = b.ConcertNo 
 AND a.ConcertNo != 'CN002'

视图创建没有任何错误。然后,我使用以下代码在视图上创建一个触发器:

CREATE OR REPLACE TRIGGER check_month
INSTEAD OF DELETE OR INSERT OR UPDATE ON ConcertView

DECLARE
    ConcertDate date;
BEGIN
    IF (to_char(EventDate, 'DD-MM-YY') = 'JUL')  THEN
        raise_application_error(-20000, 'Concerts cannot be run during JULY');
    END IF; 
END;

Trigger created.

触发器创建没有任何错误。

我正在努力确保音乐会不能在七月举行。 但是触发器不采取任何行动。有人可以让我知道我做错了什么,或解释如何测试触发器?

1 个答案:

答案 0 :(得分:2)

替换这句话:

IF (to_char(EventDate, 'DD-MM-YY') = 'JUL')

为此:

IF to_char(EventDate, 'MON') = 'JUL'

在第一句中,您将DD-MM-YY格式的日期与月份名称进行比较。在第二个中,您将比较月份的名称。

您可以在此处查看文档: Oracle Doc.