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

Probleme und Vorsichtsmaßnahmen beim Festlegen von maxPostSize für Tomcat

1. Warum maxPostSize festlegen? Der Tomcat-Contai...

Docker+Gitlab+Jenkins erstellt automatisierte Bereitstellung von Grund auf

Inhaltsverzeichnis Vorwort: 1. Docker installiere...

Eine kurze Diskussion über MySql-Ansichten, Trigger und gespeicherte Prozeduren

Sicht Was ist eine Ansicht? Welche Rolle spielt e...

Beispiel zum Ändern von Stilen über CSS-Variablen

Frage Wie ändere ich den CSS-Pseudoklassenstil mi...

Beim Website-Design sollte auf die Farbhierarchie geachtet werden

Ich habe kürzlich gesagt, dass Design ein Gefühl d...

HTML css js implementiert Tab-Seite Beispielcode

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

Detaillierte Erklärung zur JavaScript-Datenabflachung

Inhaltsverzeichnis Was ist Abflachung? Rekursion ...

Die „3I“-Standards für erfolgreiche Printwerbung

Für viele inländische Werbetreibende ist die Erste...

Vue implementiert die Anmeldung mit grafischem Bestätigungscode

In diesem Artikelbeispiel wird der spezifische Co...