(mySQL/ALTER) in Spalten UNIQUE löschen und COMMENT ändern
Das-andere-Ich
- datenbank
0 ChrisB
Hallo,
ich möchte in MySQL (mit ALTER TABLE ...) Spaltenkommentare ändern und auf UNIQUE gesetzte Spalten wieder auf "normal" setzen. Unten ist ein Script, dass eine Testtabelle anlegt und danach einige Änderungen in der Tabelle vornimmt.
Das mit dem COMMENT und UNIQUE habe ich auch irgendwie hingekriegt - aber ist das mehr als ein Workarround oder schon der Weisheit letzer Schluss?
Danke fuer (auch nur gutgemeinte) Kommentar, Das-andere-Ich
------------ Test Tabelle zum experimentieren anlegen --------------------------------
DROP TABLE IF EXISTS Temp;
CREATE TABLE IF NOT EXISTS Temp
(
Benutzernr MEDIUMINT(8) ZEROFILL UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (Benutzernr),
Loginname VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "",
Erstellt_am TIMESTAMP DEFAULT NOW(),
Erstellt_von MEDIUMINT(8) ZEROFILL UNSIGNED,
Vorname VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "",
Nachname VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "",
Anrede SET('Herr', 'Frau') DEFAULT "",
Strasse VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "",
Hausnummer VARCHAR(5) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "",
PLZ VARCHAR(5) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "",
Ort VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "",
email VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "",
email_verify SET('Nein', 'Ja') DEFAULT 'Nein' COMMENT 'Wurde die E-Mail Adr. verifiziert?',
Telefon VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "",
Geburtstag DATE,
PW VARCHAR(50) CHARACTER SET ascii COLLATE ascii_general_ci DEFAULT NULL,
gesperrt SET('Nein', 'Ja') DEFAULT 'Nein',
BenKommentar VARCHAR(250) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "" COMMENT "nich fuer Ben. einsehbar"
) CHARACTER SET ascii COLLATE ascii_general_ci, COMMENT="Tab. mit Benutzerdaten";
----------------------------Nun aendern wir, was wir oben verpatzt haben ----------
-- Den Kommentar fuer die Tabelle koennen wir ruhig ungekuerzt angeben
ALTER TABLE Temp COMMENT="Tabelle mit Benutzerdaten";
-- Beim Default Zeichensatz der Tabelle haben wir geschlampt - wir aendern das.
ALTER TABLE Temp CHARACTER SET utf8 COLLATE utf8_bin;
-- Spalte "gesperrt" brauchen wir doch nicht - wir loeschen sie einfach.
ALTER TABLE Temp DROP COLUMN gesperrt;
-- Eine Spalte fuer "Titel" (Prof. Dr. etc) haben wir vergessen.
ALTER TABLE Temp ADD COLUMN Titel VARCHAR(5) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT "" COMMENT "Dr., Prof., etc.";
-- Wir suchen oft nach Telefonnummern - dehalb indezieren wir sie.
ALTER TABLE Temp ADD INDEX (Telefon);
-- War doch quatsch! Den Index brauchen wir nicht.
ALTER TABLE Temp DROP INDEX Telefon;
-- Aber der "Loginname" darf auf keinen Fall doppelt vorkommen.
ALTER TABLE Temp ADD UNIQUE (Loginname);
-- Und wenn Vor- und Nachname gleich sind, wollen wir das auch nicht.
ALTER TABLE Temp ADD UNIQUE VorNachname (Vorname, Nachname);
-- Quatsch - natuerlich kann Vor- und Nachname gleich sein!!!
-- Anmerkung: das loeschen von UNIQUE geht offenbar nur mit DROP INDEX (weil es sich
-- bei UNIQUE um einen Index handelt?).
ALTER TABLE Temp DROP INDEX VorNachname;
-- Wir wollen der Zeile PW einen neuen Kommentar geben. Habe da aber nichts gefunden!!!
-- Ein Workaround: man gibt mit CHABGE nochmal die gesamte column_definition an und
-- setzt den Kommentar dazu.
ALTER TABLE Temp CHANGE PW PW VARCHAR(50) CHARACTER SET ascii DEFAULT NULL COMMENT "Passwort hier VERSCHLUESSELT eintragen";
-- Auffaellig: der analoge Befehl mit MODIFY ...
-- ALTER TABLE Temp MODIFY PW VARCHAR(50) CHARACTER SET ascii DEFAULT NULL COMMENT "Passwort hier VERSCHLUESSELT eintrage
-- ... gibt einen Fehler aus.
Hi,
Das mit dem COMMENT und UNIQUE habe ich auch irgendwie hingekriegt - aber ist das mehr als ein Workarround oder schon der Weisheit letzer Schluss?
Du musst nicht jede einzelne Änderung in einem eigenen ALTER-Statement abfeuern, du kannst auch mehrere in einem zusammenfassen.
MfG ChrisB
Hi,
...
Du musst nicht jede einzelne Änderung in einem eigenen ALTER-Statement abfeuern, du kannst auch mehrere in einem zusammenfassen.
MfG ChrisB
Danke, das wusste ich. Ich hielt es so fuer uebersichtlicher weil ich in dem Thema nicht sonderlich fitt bin. Aber das ist wohl geschmackssache.
MfG, Das-ander-Ich