Mahlzeit,
Gibt es nicht genau deshalb UNIQUE constraints? ;-)
Das Problem ist, die vorhandene Datenbank will ich nicht ändern, da sonst jedes Update viel Aufwand ist. Deshalb auch die Trigger ;)
Und die Struktur hat keine ID. In jeder Spalte darf ein Wert mehrfach vorkommen, es dürfen nur keine exakt gleichen Einträge sein.
DROP TABLE IF EXISTS `STOCKCURRENT`;
CREATE TABLE IF NOT EXISTS `STOCKCURRENT` (
`LOCATION` varchar(255) NOT NULL,
`PRODUCT` varchar(255) NOT NULL,
`ATTRIBUTESETINSTANCE_ID` varchar(255) DEFAULT NULL,
`UNITS` double NOT NULL,
UNIQUE KEY `STOCKCURRENT_INX` (`LOCATION`,`PRODUCT`,`ATTRIBUTESETINSTANCE_ID`),
KEY `STOCKCURRENT_FK_1` (`PRODUCT`),
KEY `STOCKCURRENT_ATTSETINST` (`ATTRIBUTESETINSTANCE_ID`),
CONSTRAINT `STOCKCURRENT_ATTSETINST` FOREIGN KEY (`ATTRIBUTESETINSTANCE_ID`) REFERENCES `ATTRIBUTESETINSTANCE` (`ID`),
CONSTRAINT `STOCKCURRENT_FK_1` FOREIGN KEY (`PRODUCT`) REFERENCES `PRODUCTS` (`ID`),
CONSTRAINT `STOCKCURRENT_FK_2` FOREIGN KEY (`LOCATION`) REFERENCES `LOCATIONS` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
PRODUCT kann also für jedes angelegte Lager (LOCATION) vorkommen, aber es darf für Lager 1 nicht zweimal den gleichen Artikel geben. Die doppelten Einträge sind vermutlich das Resultat eines Bugs in meiner Software ;)
Mein eigenes Frontend wird mit Sicherheit eine entsprechende Abfrage bekommen und die doppelten Einträge werden bereinigt. Mal sehen ob in der Wirkdatenbank der Fehler auch da ist oder nur in der Testversion.
--
42