Anzahl von bestimmten Einträgen in eine Tabelle begrenzen

Jumper512

Benutzer
Beiträge
16
Hallo Community,

folgende Situation: Auf einer Website können Personen in einem HTML Formular ihre Daten eintragen. Dort wählen sie auch eine Gruppe aus. Danach werden diese Daten mitttels eines OCI_EXECUTE und einem SQL - Insert in die Tabelle auf der Oracle Datenbank eingetragen.

Es gibt verschiedene Gruppen und in der Spalte Gruppe soll dann eine Gruppe nur maximal 30 mal vorkommen.
Ich könnte das über einen Check direkt beim Create-Table machen. Aber gibt es nicht eine schönere Variante? Oder soll ich das lieber im HTML selbst realisieren ?
 
Werbung:
Pre-Kaffee-Fingerübung:

Code:
test=# create table bla (g int);
CREATE TABLE
test=*# create function check_g() returns trigger as $$ begin case when (select count(1) from bla where g=new.g) < 3 then return new; else raise exception 'more than 3 rows with %', new.g; return NULL; end case; end; $$language plpgsql;
CREATE FUNCTION
test=*# create trigger trg1 after insert or update on bla for each row execute procedure check_g();
CREATE TRIGGER
test=*# insert into bla values (1);
INSERT 0 1
test=*# insert into bla values (1);
INSERT 0 1
test=*# insert into bla values (1);
ERROR:  more than 3 rows with 1
test=*# insert into bla values (1);
ERROR:  more than 3 rows with 1
test=*# select * from bla;
 g
---
 1
 1
(2 rows)
 
Vielen Dank für deine Antwort :D

Aber ich bekomme bei meinem Trigger immer diese Fehlermeldung und ich weiß nicht warum.

Fehlerbericht:
ORA-04079: Ungültige Triggerangabe
04079. 00000 - "invalid trigger specification"
*Cause: The create TRIGGER statement is invalid.
*Action: Check the statement for correct syntax.

Code:
CREATE TRIGGER TR_GROUP AFTER INSERT OR UPDATE ON Teilnehmer FOR EACH ROW EXECUTE check_GROUP();
 
Werbung:
Zurück
Oben