2012-07-04 4 views
0

Hi je travaille sur un trigger qui ne permet pas les insertions/mises à jour lorsque les données nouvellement insérées (adresse, numéro de liste, date, prix) ont un tuple similaire.SQL Suppression de multiples avec les mêmes attributs

Condition - une liste ne peut pas être répertorié deux fois le même jour tableau 123, 19 juin 1992 123, 20 juin 1990 insert: 123 20 Jun 1990 - wouldnt travaillent déjà dans le tableau

La seule problème avec mon code est que je ne peux pas le faire fonctionner lorsque ma table de liste n'a pas de données pour commencer

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; 

Ceci est dans l'oracle. Donc mes erreurs sont sur - IF (c_date =: NEW.listing_date) parce que c_date est nul

+0

Quel type de SQL est-ce? Oracle? MySql? DB2? – RBarryYoung

+0

c'est l'oracle db – George

Répondre

1

Pourquoi ne pas simplement mettre une contrainte unique sur plusieurs colonnes?

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

?

+0

Wow, ne sais pas comment ça wizzed par moi, yikes .. – George

Questions connexes