Anbei eine kleine Idee für alle, die verteilte Datenhaltung haben, und dazu eine architektonisch recht einfache Synchronisation brauchen. Manchmal kommt aus diversen Gründen ein Replikationsmechanismus nicht in Frage. Dafür nun die folgende Idee. Wir nutzen dabei aus, dass MySQL bei zusammengesetzten Indizes einen AUTO_INCREMENT-Wert pro distinktem Schlüsselpräfix zählt. Das heißt ganz konkret: Wir legen einen [...]
Damit Sie in einem SQL Statement eine eindeutige ID (unique ID = UID) nutzen können, steht Ihnen der Befehl “uuid()” zur Verfügung:
SELECT UUID();
Ergebnis:
f15be048-dfb8-102d-b15d-88b2e2560827
Hinweis:
In Verbindung mit einer aktiven Replikation kann diese Funktion
derzeit noch nicht genutzt werden.
Netzwerkadressen werden üblicherweise als String (vier
punktgetrennte Oktette) übergeben.
Um diesen Text in eine Zahl (integer) umzurechnen, nutzen Sie die
Funktion “inet_aton()”.
Natürlich kann diese Funktion auch nur Teil-IP-Adresse
umwandeln.
Das folgende Beispiel zeigt die Anwendung:
SELECT INET_ATON('192.168.0.200');
Ergebnis:
3232235720
Die Zahl berechnet sich aus folgender Formel:
192×2563 + 168×2562 + 0×256 + 200 = 3232235720
Um diese Zahl wieder in eine gültige IP Adresse zu konvertieren,
zeigen wir im folgenden Beispiel
die Anwendung des mySQL Befehls “inet_ntoa()”:
SELECT INET_NTOA(3232235720);
Ergebnis:
192.168.0.200
Um innerhalb eines mySQL Befehles den aktuell angemeldeten Benutzer zu erhalten, nutzen Sie einfach die Funktion “current_user()”. Das folgende, einfache Beispiel zeigt die Anwendung:
SELECT CURRENT_USER();
Gleichzeitig wird der Hostname ausgegeben.
Ergebnis (Beispiel):
test@localhost
Eine weitere Funktion ist “user()”. Die Funktion liefert Ihnen den Benutzernamen, welchen Sie beim Herstellen der Verbindung zu Ihrem mySQL Server eingegeben haben. Zusätzlich wird der Clienthost ausgegeben, über den die Verbindung hergestellt wurde. Der Wert kann sich von dem von der o.a. Funktion “current_user()” unterscheiden.
SELECT USER();
Um aus der Funktion “user()” nur den aktuellen Benutzernamen zu erhalten, nutzen Sie folgenden SQL Befehl:
SELECT SUBSTRING_INDEX(USER(),'@',1);