DJTank Geschrieben 13. Oktober 2005 Teilen Geschrieben 13. Oktober 2005 Hallo Leute, ich versuche gerade etwas merkwürdiges, aber das muss leider so sein. Ich möchte beim Einfügen eines Datensatzes ein bestimmtes Feld darauf prüfen, ob der Wert, den ich reinschreiben will schon einmal vorhanden ist (ja ich weiß, normalerweise wäre das ein UK/PK, aber ich kann den hier nicht anwenden). Wenn der Wert schon vorhanden ist, sollte der Insert nicht erfolgen und eine Fehlermeldung zurückgegeben werden. Ich habe das mit folgendem Trigger probiert. Aber außer konfus ist das Teil wohl überhaupt nichts Kann mir da jemand etwas unter die Arme greifen? EDIT: Hm, Rollback scheint in einem Trigger sowieso nicht erlaubt zu sein, was aber das Problem nicht ändert. CREATE TRIGGER SA999.TRIG_UNIQUE_MATCHCODE BEFORE INSERT ON SA999.KONTO FOR EACH ROW DECLARE cMatchcode VARCHAR(20); BEGIN cMatchcode:=''; SELECT Matchcode INTO cMatchcode FROM Konto WHERE :OLD.Matchcode=:NEW.Matchcode; IF NOT cMatchcode = '' THEN ROLLBACK; END IF; END; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jasper Geschrieben 13. Oktober 2005 Teilen Geschrieben 13. Oktober 2005 create or replace trigger tab_trig before insert on tab for each row declare dummy number; begin select 1 into dummy from tab where id = :new.id; raise_application_error(-20000, 'dup_id: '||:new.id); exception when NO_DATA_FOUND then null; when OTHERS then raise; end tab_trig; / liefert bei bereits vorhandener id den fehler ora-20001 mit fehlertext 'dup_id: <id>' zurück. -j Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DJTank Geschrieben 19. Oktober 2005 Autor Teilen Geschrieben 19. Oktober 2005 Ohhhh, dankeschön vielmals Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.