Hallo,
ich habe hier folgendes einfach DB-Schema:
Das General Constraint ist, dass es pro Jahr und pro Kategorie max. drei Preisträger geben darf.
Wie überprüfe ich das?
Ich habs mit einem Trigger versucht, nur leider erhalte ich da eine Fehlermeldung:
Ich erhalte folgenden Fehler:
Jemand eine Idee?!
Danke im Voraus!
L. G.
Steffo
PS: Achja: Ich verwende Oracle-SQL. Die Lösung sollte möglichst einfach sein, da das eine Klausuraufgabe ist und eine geforderte, komplizierte Lösung sehr unwahrscheinlich ist.
ich habe hier folgendes einfach DB-Schema:
Code:
Create Table Preistraeger(
PNr Integer,
Name varchar2(25),
Land varchar2(15),
Constraint pk_Preistraeger Primary Key(PNr)
);
Create Table Nobelpreis(
Kategorie varchar2(15),
Jahr Integer,
PNr Integer,
Constraint pk_Nobelspreis Primary Key(Kategorie, Jahr, PNr),
Constraint fk_Nobelpreis Foreign Key(PNr)
References Preistraeger(PNr)
);
Das General Constraint ist, dass es pro Jahr und pro Kategorie max. drei Preisträger geben darf.
Wie überprüfe ich das?
Ich habs mit einem Trigger versucht, nur leider erhalte ich da eine Fehlermeldung:
Code:
CREATE OR REPLACE TRIGGER trig_anz_nobelpr
BEFORE INSERT ON Nobelpreis
FOR EACH ROW
BEGIN
IF(3 < (Select Count(*) From Nobelpreis n Where n.Jahr = :NEW.Jahr And n.Kategorie = :NEW.Kategorie )) THEN
RAISE_APPLICATION_ERROR( -20001, 'Zu viele Nobelpreisträger!');
END IF;
END;
/
Code:
Fehler(2,7): PL/SQL: Statement ignored
Fehler(2,14): PLS-00405: Unterabfrage ist in diesem Kontext nicht zulässig
Jemand eine Idee?!
Danke im Voraus!
L. G.
Steffo
PS: Achja: Ich verwende Oracle-SQL. Die Lösung sollte möglichst einfach sein, da das eine Klausuraufgabe ist und eine geforderte, komplizierte Lösung sehr unwahrscheinlich ist.