Trigger und Artikelbegrenzung im Onlineshop

He[I]nz

Benutzer
Beiträge
22
Hallo,

mich würde interessieren ob es per Trigger möglich ist eine Begrenzung für Produkte im Onlineshop einzurichten?
Sprich der Benutzer darf nur max. 1.000 Artikel per Shop-Backend einstellen.

Alle weiteren Artikel (also der 1.001.te etc.) sollen entweder garnicht anlegbar sein oder eben in einer extra Tabelle gelistet werden welche nichts mit dem Shop-Frontend zu tun hat.

Dazu dachte ich mir, dass man erst per COUNT die Artikel in der Produkte-Tabelle zählt und dann entscheidet ob ein weiterer Artikel anlegbar ist (weil 1.000 noch nicht erreicht) oder eben nicht.

Falls es möglich ist, dann bräuchte ich Hilfe beim Code.:eek:

Das würde ich gerne wenn möglich per phpMyAdmin und der Trigger-Funktion machen ohne den ganzen Code per SQL einzugeben.:oops:
 
Werbung:
Mahlzeit :)

versteh ich das richtig das du nicht im backend eventuell per Code die Evaluierung machen willst sondern damit die DB belästigst?oO
 
Da ich den Shop-Quellcode nicht kenne :oops: kann ich dort auch keine Überprüfung stattfinden lassen sondern muss das per DB machen.
Und per Trigger dachte ich das würde gehen weil der ja jede Zeile aus der Tabelle zählen kann.

Nur nebenbei:
Die Artikel bekommen in der DB ja jeweils eine ID, wenn aber ein Artikel gelöscht wird und ein neuer angelegt wird, dann ist die eine ID (wo der Artikel gelöscht wurde) "verloren" und eine neue kommt hinzu - die Anzahl der Artikel ändert sich aber nicht.
 
Hilft leider nicht wirklich:oops:, weil ich das ja mit COUNT und if else erweitern muss.
Hätte auch nicht gefragt, wenn ich es allein hinbekommen würde.:rolleyes:
 
Ginge via Check-Constraint auch, wenn man jedem Ding im Warenkorb eine Nummer gibt und den Nummernkreis einschränkt. Oder als Trigger. Ganz primitives Beispiel für beide Lösungen:

Code:
test=# create table bestellung (id int, artikel int, check(id between 1 and 5));
CREATE TABLE
test=*# create or replace function trg_bestellung() returns trigger as $$begin if (select count(*) from bestellung) < 5 then return new; else raise exception 'zu viele Dinge im Warenkorb'; end if; end;$$language plpgsql;
CREATE FUNCTION
test=*# create trigger trg1 before insert on bestellung for each row execute procedure trg_bestellung();CREATE TRIGGER
test=*#
test=*#
test=*#
test=*# insert into bestellung values (10, 1);
ERROR:  new row for relation "bestellung" violates check constraint "bestellung_id_check"
DETAIL:  Failing row contains (10, 1).
test=*# insert into bestellung values (1, 1);
INSERT 0 1
test=*# insert into bestellung values (1, 1);
INSERT 0 1
test=*# insert into bestellung values (1, 1);
INSERT 0 1
test=*# insert into bestellung values (1, 1);
INSERT 0 1
test=*# insert into bestellung values (1, 1);
INSERT 0 1
test=*# insert into bestellung values (1, 1);
ERROR:  zu viele Dinge im Warenkorb
 
akretschmer meint nicht du sollst die Tabelle umbenennen sondern den Tabellennamen in seinem Beispielcode anpassen.

Ich weiß allerdings nicht ob MySQL Check-Constraints kann, ob es sie wirklich ausführt und welche Syntax zur Anwendung kommt. Alternativ kann man das auch immer per Trigger umsetzen aber auch hier ist MySQL sehr anders als MSSQL deswegen kann ich dazu nicht soviel sagen.
 
Entweder akzeptierst Du daß MySQL in seinen technischen Möglichkeiten arg begrenz ist und lebst damit oder Du wirst es in die Tonne und nimmst einfach was besseres. Deine Entscheidung.

Ach ja: Du kannst Dir eine Tabelle mit den Zahlen 1-1000 anlegen als Primary Key, und dann einen Foreign Key darauf in Verbindung mit einen Unique Index nehmen.
 
Werbung:
Zurück
Oben