SQL删除具有相同属性的多个

时间:2012-07-04 19:34:38

标签: sql triggers

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

条件 - 列表不能在同一天列出两次 表 123,1992年6月19日 1990年6月20日123 插入: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为空

1 个答案:

答案 0 :(得分:1)

为什么不直接设置多列唯一约束?

  

ALTER TABLE YOUR_TABLE ADD CONSTRAINT UNI_CONSTR UNIQUE(COL1,COL2,   COL3);