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

So zeigen Sie laufende Hintergrundprogramme in Linux an und beenden sie

Linux-Taskverwaltung - Ausführung und Beendigung ...

Herausforderung des HTML-Symbol-zu-Entity-Algorithmus

Herausforderung: Wandelt die Zeichen &, <,...

Implementierung eines MySQL-Gemeinschaftsindex (zusammengesetzter Index)

Gemeinsamer Index Die Definition des gemeinsamen ...

MySQL Server 8.0.13.0 Installations-Tutorial mit Bildern und Text

Installieren Sie 8.0.13 basierend auf MySQL 6.1.3...

So zeigen Sie die Erstellungszeit von Dateien in Linux an

1. Einleitung Ob die Erstellungszeit einer Datei ...

So beheben Sie den PyCurl-Fehler unter Linux

Lösung für „Curl-config konnte nicht ausgeführt w...

Tutorial zur HTML-Tabellenauszeichnung (10): Zell-Padding-Attribut CELLPADDING

Unter Zellenabstand versteht man den Abstand zwis...

Verwenden Sie JavaScript, um Seiteneffekte zu erstellen

11. Verwenden Sie JavaScript, um Seiteneffekte zu...

Wissen Sie, wie viele Verbindungen ein Linux-Server verarbeiten kann?

Vorwort Sehen wir uns zunächst an, wie eine TCP-V...

MySQL fügt automatisch Millionen simulierter Datenoperationscodes ein

Ich verwende Navicat als Datenbanktool. Andere si...

vite2.x implementiert das On-Demand-Laden von Ant-Design-Vue@next-Komponenten

1. Version verwenden vite:2.0 Ant-Design-Vue: 2.0...

Vue implementiert die Bottom-Query-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Einfaches HTML-Applet für Einkaufsmengen

Dieser Artikel stellt Ihnen ein einfaches HTML-Ap...

So sichern Sie MySQL-Kontoinformationen elegant

Vorwort: Ich bin kürzlich auf das Problem der Ins...