Wie 'triggere' ich eine eindeutige ID ?

Guten Tag,

ich entwerfe gerade eine Datenbank, in der natürlich innerhalb verschiedener Tabellen über primarykey die zeilen eindeutig definiert sind.
Problem ist folgendes:

  • in einer Tabelle „Kabelverbindungen“ soll eine Zuordnung von Elementen aus unterschiedlichen Tabellen erfolgen.
    -somit nutzt mir der pk der einzelenen Tabellen nichts, da ein Gerät1 in Tabelle1 die gleiche id hat, wie Gerät1 in Tabelle2
    -mein Lösungsansatz wäre triggern- also bei jeder neuen Zeile in einer Spalte eine Id mit speziellem Präfix erzeugen, welche somit in der DATENBANK einzigartig ist…
    Wie geht so etwas, oder gibt es dafür eine „elegantere“ Lösung?
    hilfe :frowning:

Moin, thme6,

Wie geht so etwas, oder gibt es dafür eine „elegantere“
Lösung?

je nach DBMS: bei MS Access wird die ID als Autowert deklariert, heißt anderswo Autoincrement. Hat den Vorteil, dass Du alles dem DBMS überlassen kannst.

Gruß Ralf

Hallo,
welche Datenbank?

Im SQLServer gibt es zb den UniqueIdentifier als GUID

Nur weiss ich nicht warum du das brauchst? Nach dem wenigen was du schreibst tippe ich eher auf einen Designfehler der Tabellen.

Gruss
Joey

Autoincrement zählt meines wissens einfach hoch, somit ist in der tabelle die „einzigartigkeit“ gegeben, jedoch nicht in der datenbank.
ich hätte gerne eine id, welche einzigartig in der datenbank ist…??

Moin,

ich hätte gerne eine id, welche einzigartig in der datenbank
ist…??

wozu immer das gut sein mag (ich hab’s noch nie vermisst, weil ich meine Sätze nicht auf der Straße, sondern in Tabellen finde): Oracle macht das von sich aus; ob es Entsprechendes in anderen DBMS gibt, weiß ich nicht. Wenn Du kein solches hast, ist halt Handarbeit angesagt.

Gruß Ralf

hallo joey,
es is eine mysql db, unique identifier hört sich gut an, da mach ich mich mal schlau, das design is eigtl. vorgegeben, vielen dank für den tipp…

Hi!

Oracle macht das von sich aus

Hä? Seit wann? Ich kenne lediglich Sequences in Oracle … man kann damit zwar auch sämtliche IDs befüllen (bei meinem derzeitigen Projekt ist das sogar so), jedoch wird doch standardmäßig (z.B. aus dem Designer raus) je ID eine Sequence generiert (entspricht dann wieder dem Autowert aus MSAccess).

Grüße,
Tomh

  • Ja, aber du könntest natürlich für alle Entitäten nur 1 Sequence nutzten und so eine „Datenbankübergreifende“ ID generieren. Der Sinn einer solchen Aktion / Anforderung erschliessst sich mir allerdings auch nicht. Ansonstgen bleibt natürlich noch der Ausweg üner eine GUID

Gruss

also um das nochmal zu erläutern, bzw. den denkfehler zu finden:

ich habe eine tabelle mit „kabeln“, welche verschiedene technikkomponenten verbinden.
die technikkomponenten sind wiederum in seperaten tabellen angelegt,
es soll eine genau zuordnung bzw. abfrage möglich sein, z.B kabel x startet bei technik y und endet bei technik z…
der trigger (mysql) soll bei einem neuen eintrag eine id erstellen z.B
technik1_1…???

Hallo,

Da wirst du tatsächlich etwas wie eine GUID verwenden müssen, allerdings weiss ich nicht, ob MYSQL dies von Haus aus so mitbringt. Alternativ kannst du dir so etwas auch selebst bauen mit einer Funktion
Im übrigen ist da tatsächlich eine Designfehler in deinem Model,deswegen taucht diese problem ja erst auf,aber ich glaube, das hast du schon selbst gesehen.

Gruss

Hi, Ergänzung :

  • in MYSQL kannst du so was durch die Funktion UUID() erledigen

Gruss

Moion, Tomh,

Oracle macht das von sich aus

Hä? Seit wann?

da hätte ich wohl etwas vorsichtiger schreiben müssen „Oracle kann das von sich aus“ - so jedenfalls haben meine Oracle-Kunden immer gedröhnt, ohne mir erklären zu können, was sie damit anfangen.

Gruß Ralf