Hallo zusammen,
ich bin nicht nur neu in diesem Forum, sondern auch in Datenbanken und deren 'Programmierung'.
In meinem Anfängerdasein möchte ich folgendes Problem lösen:
In einer Tabelle soll bei INSERT automatisch ein Primary Key in eine dafür vorgesehene Spalte eintragen lassen. Dies soll aber nur gemacht werden, wenn eine bestimmte Anzahl von Zeilen noch nicht überschritten wurde (um z.B. nur eine Anzahl von Einträgen zuzulassen).
Angelegt habe ich eine Tabelle TEST mit den Spalten 'Nr' (als PK) und 'Name' (als String).
Dann lege ich eine Sequence und einen Trigger für den automatischen Primary Key an:
Das funktioniert auch. Aber ich bekomme es nicht hin, diesen Trigger zu erweitern. Mein Ansatz ist, über die Gruppenfunktion COUNT die Anzahl der vorhandenen Zeilen zu ermitteln und zu testen, ob ein Wert überschritten wird. Ich bin mir auch nicht sicher, ob dies die richtige Vorgehensweise ist.
Wie kann ich dieses Problem halbwegs elegant lösen?
ich bin nicht nur neu in diesem Forum, sondern auch in Datenbanken und deren 'Programmierung'.
In meinem Anfängerdasein möchte ich folgendes Problem lösen:
In einer Tabelle soll bei INSERT automatisch ein Primary Key in eine dafür vorgesehene Spalte eintragen lassen. Dies soll aber nur gemacht werden, wenn eine bestimmte Anzahl von Zeilen noch nicht überschritten wurde (um z.B. nur eine Anzahl von Einträgen zuzulassen).
Angelegt habe ich eine Tabelle TEST mit den Spalten 'Nr' (als PK) und 'Name' (als String).
Dann lege ich eine Sequence und einen Trigger für den automatischen Primary Key an:
Code:
CREATE SEQUENCE test_seq;
CREATE OR REPLACE TRIGGER test_bi
BEFORE INSERT ON test
FOR EACH ROW
BEGIN
SELECT test_seq.NEXTVAL
INTO :new.nr
FROM dual;
END;
Das funktioniert auch. Aber ich bekomme es nicht hin, diesen Trigger zu erweitern. Mein Ansatz ist, über die Gruppenfunktion COUNT die Anzahl der vorhandenen Zeilen zu ermitteln und zu testen, ob ein Wert überschritten wird. Ich bin mir auch nicht sicher, ob dies die richtige Vorgehensweise ist.
Wie kann ich dieses Problem halbwegs elegant lösen?