Trigger für EAN-Prüfziffer

PeterS

Aktiver Benutzer
Beiträge
31
Hallo miteinander,

ich bin in MySQL (InnoDB) leider (noch immer) nicht sattelfest und experimentiere schon seit Tagen erfolglos.

Folgendes Problem:

In Tabelle 1 lasse ich das Feld 'id' (bigint, 13) per Auto Increment mit einer 12-stelligen Ziffernfolge befüllen.

Im Anschluss soll ein Trigger als 13. Ziffer eine EAN-Prüfziffer (Mod 10) anhängen.
  • Geht das überhaupt im selben Feld 'id'?
  • Wann schießt ein solcher Trigger? Würde ein Before-Trigger sowas erledigen können?
  • Oder muß ich die Zifferfolge zunächst in einen String umwandeln (wie?), um den in die Prüfziffernrechnung zu geben?
P.
 
Werbung:
Hallo Peter,

ja, das geht, aber wohl nicht ganz so wie du dir das vorstellst.

Es ist nicht möglich dies primär mit einem Auto-increment Feld zu machen, denn wenn du eine 12 stellige zahl in diese Feld schreibst und es autom. auf 13 stellen erweitern lässt, wird die nächste Zahl um 1 größer als die 13 stelige Zahl. als fällt aus !

mach dir ein eigenes feld das autom. den EAN aus einem anderen Feld generiert.
 
Halle BerndB,
an sowas dachte ich auch schon. Das muß dann wohl alles der Trigger erledigen?
  • Ziffer aus 'id' holen und in String umwandeln (ist die Ziffer bei einem Berfore-Trigger denn schon nutzbar?)
  • Prüfziffer bilden und anhängen
  • alles in neuem Feld 'EAN' speichern
Könntest Du mir beim scripting auf die Sprünge helfen? Oder finde ich das irgendwo als Muster?
 
Im Anschluss soll ein Trigger als 13. Ziffer eine EAN-Prüfziffer (Mod 10) anhängen.
  • Geht das überhaupt im selben Feld 'id'?
Die Frage stellt sich eigentlich nicht. Zumindest wenn man dem Feldnamen "ID" eine Funktion als Primärschlüssel / technischer Schlüssel zuordnet.
Man vermischt niemals, technische und funktionale/logische Elemente im Datenmodell.

Du holst Dir also irgendwoher eine Zahl, baust die Prüfziffer ein und der Rest ist uninteressant.
BTW: Warum soll es ein String Feld werden?
Ich hab keine Ahnung, was Du mit den Nummern noch in der Nutzung anfangen möchtest oder musst, aber es ist erstmal eine Zahl. Die könnte man auch als Zahl speichern. Weitere Elemente sind nur Formatierung, die im Zweifel bei der Verarbeitung stören.
 
Werbung:
Zurück
Oben