MySQL Daten in Tabelle A und AUTOINCREMENT-Feld als Schlüsselgenerator in Tabelle B
Hallo!
Ich möchte eine Tabelle (B) mit einer einzigen Spalte, welche ein AUTO_INCREMENT ist, als Schlüsselgenerator für eine andere (Daten-)Tabelle (A) verwenden. In der Tabelle A ist die Schlüsselspalte also keine AUTO_INCREMENT sondern lediglich UNIQUE. Durch die Methode möchte ich Schlüsselkollisionen vermeiden, weil sich unterschiedliche Datenobjekte über unterschiedliche Datentabellen verteilen, deren Schlüssel aber global eindeutig sein sollen. Das Grundprinzip funktioniert auch soweit. Nur finde ich es etwas lästig, die ganze Schlüssel-Erzeugung quasi "zu Fuß" zu machen wenn ich in den Datentabellen neue Datensätze anlegen will. Also erst neuen Datensatz in der AUTO_INCREMENT-Tabelle anlegen, dann LastInsertId von dort abfragen und in die Datentabelle einfügen.
Gibt es eine Möglichkeit, in einem Rutsch in Tabelle B einen Datensatz einzufügen und von dort die LastInsertId gleich in Tabelle A zu schreiben? Also in einem Query?
Grüße
Cody
Ich möchte eine Tabelle (B) mit einer einzigen Spalte, welche ein AUTO_INCREMENT ist, als Schlüsselgenerator für eine andere (Daten-)Tabelle (A) verwenden. In der Tabelle A ist die Schlüsselspalte also keine AUTO_INCREMENT sondern lediglich UNIQUE. Durch die Methode möchte ich Schlüsselkollisionen vermeiden, weil sich unterschiedliche Datenobjekte über unterschiedliche Datentabellen verteilen, deren Schlüssel aber global eindeutig sein sollen. Das Grundprinzip funktioniert auch soweit. Nur finde ich es etwas lästig, die ganze Schlüssel-Erzeugung quasi "zu Fuß" zu machen wenn ich in den Datentabellen neue Datensätze anlegen will. Also erst neuen Datensatz in der AUTO_INCREMENT-Tabelle anlegen, dann LastInsertId von dort abfragen und in die Datentabelle einfügen.
Gibt es eine Möglichkeit, in einem Rutsch in Tabelle B einen Datensatz einzufügen und von dort die LastInsertId gleich in Tabelle A zu schreiben? Also in einem Query?
Grüße
Cody
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 264754
Url: https://administrator.de/contentid/264754
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
anstelle der "Schlüsselverwaltungstabelle" die globale Option "auto_increment_increment" in my.cnf (auf die Anzahl der betroffenen Tabellen) zu setzen, ist für Dich keine Option?
Wenn nicht, könnten hier oder hier ein paar Anregungen für Dich stehen.
Gruß,
Gersen
anstelle der "Schlüsselverwaltungstabelle" die globale Option "auto_increment_increment" in my.cnf (auf die Anzahl der betroffenen Tabellen) zu setzen, ist für Dich keine Option?
Wenn nicht, könnten hier oder hier ein paar Anregungen für Dich stehen.
Gruß,
Gersen
Hallo ,
die Auto_Increment funktion gibt es ja genau aus diesem Grund.Wichtig ist hier natuerlich den Primarykey zu setzen.
Was fuer ne Datenbank nutzt Du ? myisam, InnoDB ?
Gruss
Ich möchte eine Tabelle (B) mit einer einzigen Spalte, welche ein AUTO_INCREMENT ist, als Schlüsselgenerator für eine andere (Daten-)Tabelle (A) > verwenden In der Tabelle A ist die Schlüsselspalte also keine AUTO_INCREMENT sondern lediglich UNIQUE. Durch die Methode möchte ich
Schlüsselkollisionen vermeiden, weil sich unterschiedliche Datenobjekte über unterschiedliche Datentabellen verteilen, deren Schlüssel aber global
eindeutig sein sollen.
Schlüsselkollisionen vermeiden, weil sich unterschiedliche Datenobjekte über unterschiedliche Datentabellen verteilen, deren Schlüssel aber global
eindeutig sein sollen.
die Auto_Increment funktion gibt es ja genau aus diesem Grund.Wichtig ist hier natuerlich den Primarykey zu setzen.
Was fuer ne Datenbank nutzt Du ? myisam, InnoDB ?
Gruss