MySQL implementiert eine Lösung ähnlich der Oracle-Sequenz

MySQL implementiert eine Lösung ähnlich der Oracle-Sequenz

MySQL implementiert Oracle-ähnliche Sequenzen

Oracle verwendet im Allgemeinen Sequenzen zur Verarbeitung von Primärschlüsselfeldern, während MySQL Inkremente bereitstellt, um ähnliche Zwecke zu erreichen.

Bei der tatsächlichen Verwendung zeigt sich jedoch, dass die automatische Inkrementierung von MySQL viele Nachteile aufweist: Es ist unmöglich, Schrittweite, Startindex, Schleife usw. zu steuern. Wenn die Datenbank migriert werden muss, stellt auch der Primärschlüssel ein großes Problem dar.

Dieser Artikel beschreibt eine Lösung zur Simulation von Oracle-Sequenzen, wobei der Schwerpunkt in zweiter Linie auf Ideen und Code liegt.

Die Verwendung von Oracle-Sequenzen ist nichts anderes als die Verwendung der Pseudospalten .nextval und .currval. Die Grundidee ist:

1. Erstellen Sie eine neue Tabelle in MySQL zum Speichern von Sequenznamen und -werten.

2. Erstellen Sie eine Funktion, um den Wert in der Sequenztabelle abzurufen.

Die Einzelheiten lauten wie folgt:

Die Tabellenstruktur ist:

Tabelle löschen, wenn Sequenz vorhanden ist;  
Tabellensequenz erstellen (  
  seq_name VARCHAR(50) NOT NULL, -- Sequenzname current_val INT NOT NULL, -- aktueller Wert increment_val INT NOT NULL DEFAULT 1, -- Schrittlänge (Span)  
  PRIMÄRSCHLÜSSEL (seq_name)  
);

Durchführung einer Simulation von currval

Funktion currval erstellen(v_seq_name VARCHAR(50))  
gibt eine Ganzzahl zurück 
beginnen 
  Deklarieren Sie einen ganzzahligen Wert.  
  Sollwert = 0;  
  Wählen Sie aktuellen Wert in Wert aus  
  aus Sequenz 
  wobei seq_name = v_seq_name;  
  Rückgabewert;  
Ende;

Funktionsverwendung: select currval('MovieSeq');

Implementierung des Simulationsschemas von nextval

Funktion nextval erstellen (v_seq_name VARCHAR(50))  
Ganzzahl zurückgeben 
beginnen 
 Aktualisierungsreihenfolge 
 setze aktuellen_Wert = aktuellen_Wert + inkrementellen_Wert  
 wobei seq_name = v_seq_name;  
 gibt currval zurück (v_seq_name);  
Ende;

Die Funktion wird wie folgt verwendet: select nextval('MovieSeq');

Funktion, die den Wert einer Einstellung erhöht

Funktion „setval“ erstellen (v_seq_name VARCHAR (50), v_new_val INTEGER)  
gibt eine Ganzzahl zurück 
beginnen 
 Aktualisierungsreihenfolge 
 setze aktuellen_Wert = v_neuer_Wert  
 wobei seq_name = v_seq_name;  
gibt currval(Sequenzname) zurück;

Ebenso können Funktionen für Schrittweitenoperationen hinzugefügt werden, die hier jedoch nicht beschrieben werden.

Achten Sie auf die Syntax, die Datenbankfelder sollten übereinstimmen

verwende bvboms; 
TRENNUNGSZEICHEN $$ 
Funktion „setval“ erstellen (v_seq_name VARCHAR (50), v_new_val INTEGER) 
gibt eine Ganzzahl zurück 
beginnen 
 Aktualisierungsreihenfolge 
 setze aktuellen_Wert = v_neuer_Wert 
 wobei seq_name = v_seq_name; 
gibt currval(Sequenzname) zurück;
Ende $$
TRENNUNGSZEICHEN $$

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Lösung zur Echtzeitsynchronisierung von MySQL nach Oracle
  • Zusammenfassung häufig verwendeter Anweisungen zur Änderung mehrerer Tabellen in MySQL und Oracle
  • Zusammenfassung der Unterschiede zwischen MySQL und Oracle (Vergleich der Funktionsleistung, Auswahl, SQL bei der Verwendung usw.)
  • Backup zwischen MySQL-Datenbank und Oracle-Datenbank importieren
  • Der Implementierungsprozess zum Extrahieren von Oracle-Daten in eine MySQL-Datenbank
  • Vergleichende Analyse der Hochverfügbarkeitslösungen von Oracle und MySQL
  • Vergleich der Unterschiede zwischen MySQL und Oracle: sechs Trigger
  • Vergleich der Unterschiede zwischen MySQL und Oracle: Fünf: Gespeicherte Prozeduren und Funktionen
  • MySQL und Oracle Unterschiede Vergleich dreier Funktionen
  • Detaillierte Erklärung des Missverständnisses zwischen MySQL und Oracle

<<:  So implementieren Sie eine MySQL-Master-Slave-Replikation basierend auf Docker

>>:  JavaScript zum Erreichen eines einfachen Tab-Leisten-Umschaltens

Artikel empfehlen

Eine bunte Katze unter Linux

Freunde, die das Linux-System verwendet haben, mü...

W3C Tutorial (12): W3C Soap Aktivität

Bei Webdiensten geht es um die Kommunikation zwis...

HTML-Head-Tag-Metadaten zum Erreichen einer Aktualisierungsumleitung

Code kopieren Der Code lautet wie folgt: <html...

HTML-Tutorial: Sammlung häufig verwendeter HTML-Tags (5)

Verwandte Artikel: Anfänger lernen einige HTML-Ta...

Analyse des Problems des Datenverlusts durch erzwungene Aktualisierung von Vuex

vuex-persistenter Zustand Kernprinzip: Alle Vuex-...

So ändern Sie das Root-Passwort in einem Container mit Docker

1. Verwenden Sie den folgenden Befehl, um das SSH...

Was tun, wenn Sie Ihr Passwort in MySQL 5.7.17 vergessen?

1. Skip-Grant-Tables zur Datei my.ini hinzufügen ...

Beispiel eines Befehls zur Linux-Hardwarekonfiguration

Hardware-Ansichtsbefehle System # uname -a # Kern...

So installieren Sie MySQL für Anfänger (erwiesenermaßen effektiv)

1. Software-Download MySQL-Download und -Installa...

MySQL-Limit-Leistungsanalyse und -Optimierung

1. Fazit Syntax: Limit-Offset, Zeilen Schlussfolg...

Beschreiben Sie kurz den Unterschied zwischen MySQL und Oracle

1. Oracle ist eine große Datenbank, während MySQL...

Frameset über Iframe in Body einfügen

Da Frameset und Body auf derselben Ebene liegen, k...

Umfassende Zusammenfassung der MySQL-Funktionen

Inhaltsverzeichnis 1. Häufig verwendete Zeichenfo...

Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort vergessen?

Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort ve...