Oracle 插入时检查受益人是否为成年人(超过18岁)

Oracle 插入时检查受益人是否为成年人(超过18岁),oracle,Oracle,在“受益人”表中,我有“出生日期”一栏,当受益人登记时,我要检查,如果不是成年人(不超过18岁),我要禁止登记 例如,今天是“2017-04-05”,如果受益人尝试插入出生日期“1999-04-06”,我希望不允许插入。如果出生日期为“1999-04-05”或更早,则必须插入 搜索后找到的触发器是否用于此?我尝试了几种方法,但没有意识到如何将此限制添加到我的表中。在SQL Server数据库中,您可以在触发器中使用DATEDIFF函数: DATEDIFF(YEAR, birthDate, SYS

在“受益人”表中,我有“出生日期”一栏,当受益人登记时,我要检查,如果不是成年人(不超过18岁),我要禁止登记

例如,今天是“2017-04-05”,如果受益人尝试插入出生日期“1999-04-06”,我希望不允许插入。如果出生日期为“1999-04-05”或更早,则必须插入


搜索后找到的触发器是否用于此?我尝试了几种方法,但没有意识到如何将此限制添加到我的表中。

在SQL Server数据库中,您可以在触发器中使用DATEDIFF函数:

DATEDIFF(YEAR, birthDate, SYSDATE) >= 18
在Oracle数据库中,您可以使用“月间隔”功能:

months_between(SYSDATE, birthDate)/12 >= 18
您可以使用以下选项:

(如果您从未更新过生日列,则可以删除此项:
或更新
并重新创建触发器)


可能重复请张贴您的尝试,以帮助人们改善您的代码哎哟不,这是一个SQL Server功能。甲骨文中也有类似的方法,请给我一秒钟时间找到它,我会把它添加到我的答案中
CREATE TRIGGER trg
BEFORE INSERT OR UPDATE ON beneficiary
FOR EACH ROW
BEGIN
    IF :NEW.birthDate >  add_months(sysdate , -12*18)  then
       RAISE_APPLICATION_ERROR(-20001, 'Underage user');
    END IF;
END;