Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MySQL Daten in Tabelle A und AUTOINCREMENT-Feld als Schlüsselgenerator in Tabelle B

Frage Entwicklung Datenbanken

Mitglied: Codehunter

Codehunter (Level 2) - Jetzt verbinden

27.02.2015, aktualisiert 10:38 Uhr, 706 Aufrufe, 3 Kommentare

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
Mitglied: Gersen
27.02.2015, aktualisiert um 12:34 Uhr
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
Bitte warten ..
Mitglied: Codehunter
27.02.2015 um 16:10 Uhr
Hallo!

Die my.cnf ist nicht wirklich eine Option. Bei den von mir gehosteten Anwendungen vielleicht, aber nicht bei denen, die Kundenseitig auf billigen Shared-Webspaces gehostet werden. Die kommen ja an ihre my.cnf nicht ran.

Ich denke ich habe jetzt aber eine praktikable Lösung per Before-Insert-Trigger gefunden. Den muss ich zwar für jede Tabelle welche den globalen Schlüssel verwendet, separat erstellen. Aber unterm Strich halte ich den Anwendungscode dadurch von Overhead frei.

Grüße
Cody
Bitte warten ..
Mitglied: Alchimedes
27.02.2015 um 17:55 Uhr
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.

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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Server
gelöst SQL-Tabelle portieren und dabei Daten konvertieren (1)

Frage von menace zum Thema Server ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Webbrowser
gelöst Daten in entfernte Mysql DB schreiben (3)

Frage von nullacht15 zum Thema Webbrowser ...

Microsoft Office
Kopieren von auszuwählenden Daten in weitere Tabelle (1)

Frage von dus100 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...