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