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

Tutorial zur Installation und Konfiguration von msmtp und mutt für Raspberry Pi

1. Installieren Sie mutt sudo apt-get install mut...

Über MySQL innodb_autoinc_lock_mode

Der Parameter innodb_autoinc_lock_mode steuert da...

Vue-Statusverwaltung: Verwendung von Pinia statt Vuex

Inhaltsverzeichnis 1. Was ist Pinia? 2. Pinia ist...

Verwenden Sie vue3, um ein Mensch-Katze-Kommunikations-Applet zu implementieren

Inhaltsverzeichnis Vorwort Initialisieren des Pro...

Zusammenfassung der Browserkompatibilität gängiger CSS-Eigenschaften (empfohlen)

Warum müssen wir die Browserkompatibilität von CS...

So installieren Sie die PHP7 Redis-Erweiterung auf CentOS7

Einführung Im vorherigen Artikel haben wir Redis ...

So verwenden Sie Nginx zum Proxy mehrerer Anwendungssites in Docker

Vorwort Was ist die Rolle eines Agenten? - Mehrer...

Vue-Konfigurationsdetails für mehrere Seiten

Inhaltsverzeichnis 1. Der Unterschied zwischen me...

Implementierung der Multi-Port-Zuordnung des Nginx-Reverse-Proxys

Code Erklärung 1.1 http:www.baidu.test.com verwen...

Instanzmethode für MySQL-String-Verkettung und Festlegen von Nullwerten

#String-Verkettung concat(s1,s2); verkette die St...

Proxy realisiert das Prinzip der bidirektionalen Bindung von Vue3-Daten

Inhaltsverzeichnis 1. Vorteile von Proxy gegenübe...

Ubuntu 20.04 CUDA- und cuDNN-Installationsmethode (grafisches Tutorial)

CUDA-Installation, cuda herunterladen Geben Sie d...