MySQL implementiert den Vorgang zum Festlegen mehrerer Primärschlüssel

MySQL implementiert den Vorgang zum Festlegen mehrerer Primärschlüssel

Benutzertabelle, ID-Nummer muss eindeutig sein, Mobiltelefonnummer, E-Mail-Adresse muss eindeutig sein

Durchführung:

Die Tabellenstruktur muss nicht verändert werden. Eine Primärschlüssel-ID plus Indeximplementierung

Legen Sie den Indextyp wie in der Abbildung gezeigt auf „Eindeutig“ fest, um das einzige Feld auszuwählen, und geben Sie ihm einen Namen. Die Indexmethode ist btree. Okay~

Ergänzung: MySQL implementiert nicht-duplizierbare Primärschlüssel für mehrere Tabellen

Es gibt zwei Tabellen in derselben Datenbank und die Felder sind dieselben, aber die gespeicherten Daten müssen unterschieden werden. Der Primärschlüssel kann jedoch nicht wiederholt werden. Die konkrete Umsetzung sieht wie folgt aus:

Erstellen Sie eine neue Datenbank mytest

Neue Benutzertabelle und Administratortabelle erstellen

CREATE TABLE `Benutzer` (
 `user_id` INT(11) NICHT NULL,
 `Benutzername` VARCHAR(255) NICHT NULL,
 `Passwort` VARCHAR(255) NOT NULL,
 `Telefon` VARCHAR(255) NICHT NULL,
 PRIMÄRSCHLÜSSEL (`user_id`)
)
COMMENT = 'Benutzertabelle'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
Tabelle „admin“ erstellen (
 `user_id` INT(11) NICHT NULL,
 `Benutzername` VARCHAR(255) NICHT NULL,
 `Passwort` VARCHAR(255) NOT NULL,
 `Telefon` VARCHAR(255) NICHT NULL,
 PRIMÄRSCHLÜSSEL (`user_id`)
)
COMMENT = 'Administratortabelle'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

Erstellen Sie eine neue Sequenztabelle:

CREATE TABLE `Sequenz` (
 `seq_name` VARCHAR(50) NICHT NULL,
 `current_val` INT(11) NICHT NULL,
 `increment_val` INT(11) NICHT NULL STANDARD '1',
 PRIMÄRSCHLÜSSEL (`seq_name`)
)
COMMENT = 'Sequenzliste'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

Fügen Sie eine neue Sequenz hinzu:

INSERT INTO Sequenz WERTE ('seq_test', '0', '1');

Erstellen Sie eine Currval-Funktion, um den aktuellen Wert der Sequenz abzurufen:

Trennzeichen #
Funktion currval erstellen(v_seq_name VARCHAR(50)) 
gibt integer(11) zurück 
beginnen
 Deklarieren Sie einen ganzzahligen Wert.
 Sollwert = 0;
 Wählen Sie current_val in Wert aus Sequenz, wobei seq_name = v_seq_name;
 Rückgabewert;
Ende;

Aktuellen Wert abfragen:

wähle currval('seq_test');

Erstellen Sie eine Nextval-Funktion, um den nächsten Wert der Sequenz zu erhalten:

Trennzeichen #
Funktion „nextval“ (v_seq_name VARCHAR(50)) erstellen gibt integer(11) zurück 
beginnen
 Aktualisierungssequenz setzt current_val = current_val + increment_val, wobei seq_name = v_seq_name;
 gibt currval zurück (v_seq_name);
Ende;

Den nächsten Wert abfragen

wähle nextval('seq_test');

Konkrete Umsetzung:

<insert id="addUser" parameterType="Benutzer">
  <selectKey keyProperty="userId" resultType="int" order="VORHER">
   wähle nextval('seq_test');
  </Schlüsselauswahl>
  in Benutzerwerte einfügen (Benutzer-ID, Benutzername, Passwort, Telefon)
  (#{Benutzer-ID},#{Benutzername, jdbcType=VARCHAR},#{Passwort, jdbcType=VARCHAR}, #{Telefon, jdbcType=VARCHAR})
 </einfügen>
<insert id="addAdmin" parameterType="Admin">
  <selectKey keyProperty="userId" resultType="int" order="VORHER">
   wähle nextval('seq_test');
  </Schlüsselauswahl>
  in Admin-Werte (Benutzer-ID, Benutzername, Passwort, Telefon) einfügen
  (#{Benutzer-ID},#{Benutzername, jdbcType=VARCHAR},#{Passwort, jdbcType=VARCHAR}, #{Telefon, jdbcType=VARCHAR})
 </einfügen>

Endgültige Umsetzung:

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Tutorial zum Primärschlüssel in MySQL und zum Einstellen seiner automatischen Inkrementierung
  • Ausführliche Erläuterung der Einstellungen für das automatische Wachstum von Primärschlüsseln in Mysql, SqlServer und Oracle
  • PHP-Code zum Erstellen von Feldern und Festlegen von Primärschlüsseln in MySQL

<<:  Neue Möglichkeiten zum Spielen mit CSS-Schriftarten: Implementierung farbiger Schriftarten

>>:  Tomcat-Konfiguration und wie man ihn in Eclipse startet

Artikel empfehlen

Eine kurze Analyse der MySQL PHP-Syntax

Schauen wir uns zunächst die grundlegende Syntax ...

100 Möglichkeiten, die Farbe eines Bildes mit CSS zu ändern (sammelnswert)

Vorwort „Wenn es um Bildbearbeitung geht, denken ...

Eine kurze Einführung in die Abfrageeffizienz von MySQL-Speicherfeldtypen

Die Suchleistung von der schnellsten bis zur lang...

Tutorial zur MySQL-Datensicherungsmethode mit Multi-Master und One-Slave

Überblick Vorgänge, die auf einer Datenbank ausge...

MySQL 8.0.16 Installations- und Konfigurations-Tutorial unter CentOS7

Deinstallieren Sie die alte MySQL-Version (übersp...

Vue realisiert den Prozentbalkeneffekt

In diesem Artikel wird der spezifische Code von V...

Detaillierte Erklärung zum effizienten MySQL-Paging

Vorwort Normalerweise wird für MySQL-Abfragen mit...

Zusammenfassung mehrerer Situationen, in denen MySQL-Indizes fehlschlagen

1. Indizes speichern keine Nullwerte Genauer gesa...

Erste Erfahrungen mit der Texterstellung mit Javascript Three.js

Inhaltsverzeichnis Wirkung Beginnen Sie mit der T...

So zeigen Sie in CocosCreator eine Textur an der Wischposition an

Inhaltsverzeichnis 1. Projektanforderungen 2. Dok...