0

嗨,我正在研究一个触发器,当新插入的数据(地址、列表编号、日期、价格)具有类似的元组时,该触发器将不允许插入/更新。

条件 - 一个列表不能在同一天列出两次表 123,1992 年 6 月 19 日 123,1990 年 6 月 20 日插入:123,1990 年 6 月 20 日 - 不能在表中工作

我的代码的唯一问题是当我的列表表没有数据开始时我无法让它工作

create or replace TRIGGER same_prop_listed BEFORE INSERT OR UPDATE  ON HasListing
FOR each ROW
DECLARE
    c_date VARCHAR2(20);
BEGIN
    SELECT LISTING_DATE
    INTO c_date
    FROM HasListing
    WHERE PROP_ADDRESS = :NEW.prop_address;
    IF (c_date = :NEW.listing_date) THEN
    RAISE_APPLICATION_ERROR(-20001,'Cannot list same property twice in  one day!');
    END IF;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
        RAISE_APPLICATION_ERROR(-20003,'No DATA');

END;

这是在甲骨文中。所以我的错误是 - IF (c_date = :NEW.listing_date) 因为 c_date 为空

4

1 回答 1

1

为什么不放一个多列唯一约束?

ALTER TABLE YOUR_TABLE 添加约束 UNI_CONSTR UNIQUE (COL1, COL2, COL3);

?

于 2012-07-04T20:25:53.173 回答