首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于检查表中是否有记录的PL/SQL Create触发器

用于检查表中是否有记录的PL/SQL Create触发器
EN

Stack Overflow用户
提问于 2021-01-10 00:56:35
回答 1查看 80关注 0票数 0

我正在创建汽车租赁/汽车共享的数据库。我想要create trigger检查是否有活动的租赁,通过检查end of same是否不为空,如果为空,如果不为空,如果它具有相同的汽车id。我没有更多的想法如何创造触发器。谢谢你的建议。

代码语言:javascript
复制
create or replace TRIGGER act_rental_trigger
BEFORE INSERT ON "RENTALS" 
FOR EACH ROW 
DECLARE 
end_of_rental date;
BEGIN  
   IF inserting THEN 
    IF end_of_rental IS NOT NULL THEN 
   IF (EXISTS ( 
      SELECT * FROM rentals 
      where rentals.car_id = :NEW.car_id ))
         THEN 
         dbms_output.put_line('You can't!'); 
    END IF; 
    END IF;
   END IF;
END;
EN

回答 1

Stack Overflow用户

发布于 2021-01-10 04:13:50

为什么触发?如果有人想租车,你为什么不在申请中这样做呢?

触发器应为raise_application_error。不要使用dbms_output.put_line,因为没有前端应用程序(我用过)能够将其内容显示给用户(我假设您不会直接在SQL*Plus或SQL Developer中操作数据,而是例如Apex或Forms应用程序)。

此外,你想要做的方式会导致变化表错误--你要插入到租用表中并从中选择(在触发器中);这是不允许的,因为表正在发生变化。是的,有一些方法可以避免它,但大多数情况下,你会发现这个错误,你必须问问自己,你做得是否正确。在我看来,你这样做是错的。

顺便问一下,你这么说是什么意思:

...通过检查end of then是否不为null,如果为NULL,则检查是否为null

哈?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65645229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档