Ich hab jetzt schon eine ganze Woche gegoolt und rumprobiert. Trigger, direkt in PHP, versuch fehler zu erzeugen usw. Ich bin einfach zu doof,eine Lösung zu finden, die so einfach ist, dass man erkennen kann ob sie richtig funktioniert oder nicht (testen mit Unit-Test-Framework kostet zuviel Zeit, da ich im Prinzip heute Abend mt dem Projekt fertig sein muss und mir deshalb nicht extra neues Wissen aneignen kann. Und testen mit echten Daten ist auch nicht sehr effektiv da ich die immer gleich in tausenderblöcken kriege :( )
hier die tabelle
Code:
DROP TABLE IF EXISTS abc;# MySQL lieferte ein leeres Resultat zurück (d.h. null Zeilen).
CREATE TABLE abc(
tid integer NOT NULL AUTO_INCREMENT ,
col_a integer,
col_b integer,
col_c integer,
col_d integer,
PRIMARY KEY ( tid ) ,
#KEY ( col_a, col_b, col_c, col_d ) eine idee die nicht funktioniert :(
);
und ich würde gerne dafür sorgen, dass bei einem insert die sql engine alleine dafür sorgt, dass eine zeile nicht zweimal eingetragen wird.
Code:
INSERT INTO abc(col_a, col_b, col_c, col_d) values (1,1,1,1);
wie du siehst, ist keine ID drin. Da diese nicht aus dem Datenbestand kommt der eingefügt werden soll, wird diese erst beim einfügen in die Datenbank durch auto_increment erzeugt.
Wenn man jetzt solche Spielereien wie das folgende funktionieren natürlich nicht, da auto_increment ja immer eine andere ID erzeugt und damit die gesamte neue Zeile an sich immer unique ist.
Wie oben zu sehen habe ich auch schon probiert mit einem key dafür zu sorgen, dass die vier wirklichen Wert-Spalten zueinander unique sein sollen, was ich dann auch mit mehreren inserts (das zweite code-beispiel) probierte. In der Tabelle steht dann aber mehrmals das tupel (1,1,1,1) drin...
Jetzt bin ich langsam am aufgeben. Bitte um Hilfe :(