首页 > 解决方案 > 为 dbms 编写触发器

问题描述

我不知道该怎么办。

如果学士学位不是 BCA 或 BCA 百分比小于 60,则编写不允许申请工作的触发器。使用下表。申请人(姓名、学士、通过年限、百分比)

标签: sqldatabaseplsqlrdbms

解决方案


首先,这里不需要触发器。

您可以CHECK按如下方式使用约束:

ALTER TABLE Applicant
ADD CONSTRAINT CHECK (BachelorDegree <> 'BCA' OR Percentage > 60);

如果您真的想要一个触发器,那么您可以按如下方式使用TRIGGERwithWHEN子句(此解决方案假定当percentageorBachelorDegree为空时,它应该允许添加数据。如果这不是您的要求,那么您可以在WHEN子句中相应地添加条件):

CREATE OR REPLACE TRIGGER APPLICANTS_TRG BEFORE
    INSERT OR UPDATE OF BACHELORDEGREE, PERCENTAGE ON APPLICANT
    FOR EACH ROW
    WHEN ( NEW.BACHELORDEGREE = 'BCA' AND NEW.PERCENTAGE < 60 )
BEGIN
    RAISE_APPLICATION_ERROR(-20000, 'Percentage must be above 60 for BCA applicants');
END;
/

推荐阅读