2016-08-29 2 views
1

Mit MySQL, wenn Sie das Kennwort ändern möchten, oder Zeichensatz, können Sie es tun, wie folgend:Warum wird ALTER TABLE zum Ändern der AUTO_INCREMENT-Variablen verwendet?

SET CHARACTER_SET_RESULTS = 'utf8'; 

Aber wenn Sie die autoincrement Variable einer Tabelle ändern möchten, müssen Sie eine andere Syntax für die :

ALTER TABLE foobar AUTO_INCREMENT=1; 

Das macht mich, wenn sie es, wenn es konsequent wäre, sich zu fragen, war wie folgt:

SET AUTO_INCREMENT=1; 

Weil 0 einigeOperationen gelten für den Tisch. Aber ich nehme an, dass es einige Gründe für diese Syntaxwahl geben muss. Beim Suchen in der Dokumentation habe ich Folgendes gefunden:

ALTER TABLE ändert die Struktur einer Tabelle. Sie können z. B. hinzufügen oder Spalten löschen, Indizes erstellen oder löschen, den Typ der vorhandenen Spalten ändern oder Spalten oder die Tabelle selbst umbenennen. Sie können auch Merkmale wie die Speicher-Engine ändern, die für die Tabelle oder den Tabellenkommentar verwendet wird.

Aber mit SET Schlüsselwort können Sie auch die Struktur der Tabelle ändern, nehme ich an? Bitte korrigieren Sie mich, wenn ich mich irre.

+0

Das automatische Inkrement ist eine Eigenschaft einer Tabelle, daher müssen Sie die Tabelle ändern. Ich verstehe nicht, wie du denkst, dass es eine gute Idee wäre, es global zu setzen/für deine Verbindung. –

+1

'AUTO_INCREMENT' ist keine Variable auf System-/Serverebene, es ist ein Spaltenattribut, während 'CHARACTER_SET_RESULTS' eine Variable auf System-/Serverebene ist, weshalb Sie die' ALTER TABLE'-Syntax verwenden müssen. –

Antwort

3

SET Syntax für Variablenzuweisung können Sie Werte für verschiedene Arten von Variablen zugewiesen werden, die den Betrieb des Servers oder Kunden beeinflussen:

  • Systemvariablen. Siehe Abschnitt 6.1.4, "Server-Systemvariablen". Systemvariablen können auch beim Serverstart gesetzt werden, wie in Abschnitt 6.1.5, "Verwenden von Systemvariablen" beschrieben.
  • Benutzerdefinierte Variablen. Siehe Abschnitt 10.4, "Benutzerdefinierte Variablen".
  • Gespeicherte Prozedur- und Funktionsparameter und gespeicherte lokale Variablen des Programms. Siehe Abschnitt 14.6.4, "Variablen in gespeicherten Programmen".

Quelle:http://dev.mysql.com/doc/refman/5.7/en/set-variable.html

Die SET ist eine Operation für die gesamte Server/Datenbank. Sie können AUTO_INCREMENT mit SET nicht nur für eine bestimmte Tabelle festlegen. Die AUTO_INCREMENT Information wird in der Tabelle selbst gespeichert. Es ist keine globale Variable, weil einige Tabellen eine und andere AUTO_INCREMENT=[another-int-value] haben können.

Um mit einem AUTO_INCREMENT anderen Wert als 1, das diesen Wert mit CREATE TABLE oder ALTER TABLE, wie zu starten: ALTER TABLE tbl AUTO_INCREMENT = 100;

Quelle:http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html

2

Mit SET Sie mysql-Variablen ändern, die sind nicht an eine bestimmte Tabelle gebunden.

Wenn Sie die Variable auto_increment ändern möchten, ändern Sie sie für eine bestimmte Tabelle. Deshalb müssen Sie die ALTER TABLE-Syntax verwenden.

Auch alles, was Sie mit create table einstellen, kann mit ALTER TABLE aktualisiert werden. auto_increment wird beim Erstellen einer Tabelle festgelegt. Wenn Sie es nicht festlegen, wird standardmäßig 1 verwendet.

Verwandte Themen