我试图创建触发器,如果角色是公司,它会提醒用户避免 address1 中的空值。这就是我结束的地方:
CREATE OR REPLACE TRIGGER "SCHEMA"."ADDRESS_VALUE"
BEFORE INSERT OR UPDATE ON "SCHEMA"."TABLE1"
FOR EACH ROW
DECLARE
ADDRESS TABLE1.ADDRESS1%TYPE;
V_CNT NUMBER;
BEGIN
ADDRESS := :NEW.ADDRESS1;
IF :OLD.ADDRESS1 = ADDRESS THEN
RETURN;
END IF;
SELECT COUNT(1)
INTO V_CNT
FROM SCHEMA.TABLE2
WHERE ROLE = 'COMPANY';
IF V_CNT > 0 THEN
RAISE_APPLICATION_ERROR(-20101,' ADDRESS IS MANDATORY');
END IF;
END;
这似乎工作正常并给出一条消息,如果用户试图将其保留为空,则“地址是强制性的”,但即使他们尝试在 address1 中添加一些内容,消息仍然会不断出现。它有点卡在那里,即使必填字段为 <> null,也不允许继续。怎么了?
你能帮我解决这个烦人的问题吗?谢谢。
Oracle 11g 正在使用中。
问候,几乎是第一次触发