小编use*_*375的帖子

如何在oracle中创建一个触发器,如果​​satrt date早于当前日期,将确保不删除任何记录?

我有一张桌子电影.

create table Movie
(
mv_id number(5),
mv_name varchar2(30),
startdate date
)
insert into Movie values(1,'AVATAR','8-MAR-2012');
insert into Movie values(2,'MI3','20-MAR-2012');
insert into Movie values(3,'BAD BOYS','10-Feb-2012');
Run Code Online (Sandbox Code Playgroud)

我想创建一个触发器,以确保如果satrt日期早于当前日期,则不会删除任何记录.我的触发器代码是 -

create  or replace  trigger trg_1
before delete
on Movie
for each row
when(old.startdate < sysdate)
begin
raise_application_error(-20001, 'Records can not be deleted');
end;
Run Code Online (Sandbox Code Playgroud)

触发器已创建.当我执行此代码以删除数据时 -

delete from Movie where mv_id=1;
Run Code Online (Sandbox Code Playgroud)

然后触发器触发但有错误,我不知道为什么我会收到这样的错误.我不想要任何错误,我只想要消息.这是错误 -

delete from Movie where mv_id=1
            *
ERROR at line 1: 
ORA-20010: Records can not be deleted
ORA-06512: at "OPS$0924769.TRG_1", line 3 …
Run Code Online (Sandbox Code Playgroud)

sql oracle sqlplus

2
推荐指数
1
解决办法
5481
查看次数

标签 统计

oracle ×1

sql ×1

sqlplus ×1