我使用以下代码在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.
触发器创建没有任何错误。
我正在努力确保音乐会不能在七月举行。 但是触发器不采取任何行动。有人可以让我知道我做错了什么,或解释如何测试触发器?
答案 0 :(得分:2)
替换这句话:
IF (to_char(EventDate, 'DD-MM-YY') = 'JUL')
为此:
IF to_char(EventDate, 'MON') = 'JUL'
在第一句中,您将DD-MM-YY格式的日期与月份名称进行比较。在第二个中,您将比较月份的名称。
您可以在此处查看文档: Oracle Doc.