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: 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: 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:
|
<<: So implementieren Sie eine MySQL-Master-Slave-Replikation basierend auf Docker
>>: JavaScript zum Erreichen eines einfachen Tab-Leisten-Umschaltens
Linux-Taskverwaltung - Ausführung und Beendigung ...
In einer ungeordneten Liste ul>li ist das Symb...
Herausforderung: Wandelt die Zeichen &, <,...
Gemeinsamer Index Die Definition des gemeinsamen ...
Installieren Sie 8.0.13 basierend auf MySQL 6.1.3...
1. Einleitung Ob die Erstellungszeit einer Datei ...
Lösung für „Curl-config konnte nicht ausgeführt w...
Unter Zellenabstand versteht man den Abstand zwis...
11. Verwenden Sie JavaScript, um Seiteneffekte zu...
Vorwort Sehen wir uns zunächst an, wie eine TCP-V...
Ich verwende Navicat als Datenbanktool. Andere si...
1. Version verwenden vite:2.0 Ant-Design-Vue: 2.0...
In diesem Artikelbeispiel wird der spezifische Co...
Dieser Artikel stellt Ihnen ein einfaches HTML-Ap...
Vorwort: Ich bin kürzlich auf das Problem der Ins...