2012-07-04 60 views
0

嗨即時處理一個觸發器,當新插入的數據(地址,列表編號,日期,價格)具有類似的元組時,將不允許插入/更新。SQL刪除具有相同屬性的倍數

條件 - 上的列表不能在同一天上市的兩倍 表 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; 

這是Oracle我不能得到它的工作。 所以我的錯誤是因爲c_date爲空IF(c_date =:NEW.listing_date)

+0

這是什麼類型的SQL?甲骨文? MySQL的? DB2? – RBarryYoung

+0

這是oracle db – George

回答

1

爲什麼你不只是把一個多列唯一約束?

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

+0

哇,不知道我是怎麼想的,yikes .. – George

相關問題