Das-andere-Ich: (mySQL/ALTER) in Spalten UNIQUE löschen und COMMENT ändern

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.  
  

  1. 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

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. 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