Änderung von bestehenden unique-Einschränkung

Ich habe eine Tabelle die wie folgt definiert sind:

CREATE TABLE `Message` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `user_id` integer NOT NULL,
    `user_to` integer NOT NULL,
    `top_num` integer NOT NULL,
    `priority` smallint NOT NULL,
    `error` varchar(120) NOT NULL,
    UNIQUE (`user_id`, `user_to`, `top_num`)
);

Später habe ich noch eine weitere Spalte, msg_type, wie diese:

ALTER TABLE Message ADD COLUMN msg_type SMALLINT(6) NOT NULL DEFAULT 0;

Allerdings habe ich zu der Erkenntnis gekommen, dass ich meinen ursprünglichen UNIQUE Einschränkung enthalten msg_type. Ich habe versucht mit

ALTER TABLE Message 
ADD UNIQUE INDEX (`user_id`, `user_to`, `top_num`, `msg_type`);

sondern Fügt sich in meine Tabelle immer noch nicht, und die Fehlermeldung zeigt an, dass das ist, weil die alte Eindeutigkeit scheitert.

Wenn ich rufe describe Messages in mysql sehe ich Folgendes:

+-----------------+----------------------+------+-----+---------+----------------+
| Field           | Type                 | Null | Key | Default | Extra          |
+-----------------+----------------------+------+-----+---------+----------------+
| id              | int(11)              | NO   | PRI | NULL    | auto_increment |
| user_id         | int(11)              | NO   | MUL | NULL    |                |
| user_to         | int(11)              | NO   | MUL | NULL    |                |
| top_num         | int(11)              | NO   | MUL | NULL    |                |
| priority        | smallint(6)          | NO   |     | NULL    |                |
| error           | varchar(120)         | NO   |     | NULL    |                |
| msg_type        | smallint(6)          | NO   |     | 0       |                |
+-----------------+----------------------+------+-----+---------+----------------+

macht es scheinen, wie msg_type ist wirklich nicht Teil der Einschränkung... Wie kann ich das alter der Einschränkung, dass die Tabelle definiert wurde, kurz mit der Neuerstellung der Tabelle?

Lesen Sie so ändern Sie den Fremdschlüssel referenzielle Aktion?, Ebenso ändern Sie Ihre unique-Einschränkung.
Hinweis: wenn Sie Tropfen Einschränkung dann nur verengen gelöscht wird, kann die Spalte nicht gelöscht werden. es ist zwei-Schritt-Arbeit in MySQL.
so hatten Sie nicht benannt, Sie Einschränkung
NÖ. Es hat keinen Namen.
ok, ich habe einige Idee, aber nicht sehr sicher, ob ich versuchen zu finden.

InformationsquelleAutor Catherine | 2014-02-14

Schreibe einen Kommentar