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, 755 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 ..
Ähnliche Inhalte
Batch & Shell
Daten aus dem Feld "date sent" in den Titel schreiben (2)

Frage von ellocko94 zum Thema Batch & Shell ...

Microsoft Office
gelöst Daten (Tabelle) aus E-Mail nach Excel übertragen (6)

Frage von kaiuwe28 zum Thema Microsoft Office ...

VB for Applications
gelöst Feld mit CSV-Daten aus MySQL-Datenbank einlesen (3)

Frage von Andreas.HH1 zum Thema VB for Applications ...

Microsoft Office
gelöst Excel Tabelle nach Spalte sortieren und Daten auf Tabellenblätter separieren (4)

Frage von Fastinator zum Thema Microsoft Office ...

Neue Wissensbeiträge
Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

Frage von Hajo2006 zum Thema LAN, WAN, Wireless ...

Microsoft Office
Saubere HTML aus Word-Dokument (13)

Frage von peterpa zum Thema Microsoft Office ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...

Microsoft
gelöst Subnetting: In welchem Subnetz befindet sich die IP? (12)

Frage von winler zum Thema Microsoft ...