oracle 检查日期是否在PLSQL中的另一个日期之前[已关闭]

jum4pzuy  于 2023-04-11  发布在  Oracle
关注(0)|答案(1)|浏览(108)

**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。

要求代码的问题必须证明对所解决的问题有最低限度的理解。包括尝试的解决方案,为什么它们不起作用,以及expected结果。另请参阅:Stack Overflow question checklist
9年前关闭。
Improve this question
我还在做我的大学任务,这里我必须在表上创建触发器

MARRIAGE(ID_marriage, Date_of_wedding, Date_of_divorce);

这将在UPDATE语句上工作,以便如果有人试图添加或编辑date_of_divorce,它将确保它是在date_of_wedding之后。
下面是数据的示例:

ID_marriage  | Date_of_wedding  |  Date_of_divorce
1             39/04/12             39/04/12
2             71/04/12             null

现在我的问题是如何在PL/SQL中比较这些日期?

9vw9lbht

9vw9lbht1#

不需要触发器,检查约束将工作:

alter table marriage
   add constraint check_divorce
   check (date_of_divorce is null or date_of_divorce > date_of_wedding);

至于触发器,您需要比较new.date_of_divorcenew.date_of_wedding的值-本质上与我在check约束中使用的条件相同。如果date_of_divorce更大,则需要引发异常以中止insert或update语句。
由于这是一个学校项目,我不会给予你完整的代码,你应该自己找到正确的语法。
手册中的相关章节包括:

  • http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#LNPLS99955
  • http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/errors.htm#LNPLS00705
  • http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#LNPLS781

相关问题