2012-05-31 3 views
0

Pour prendre un exemple de https://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html#.T8foMxTft0x:Modifier la clé étrangère de la colonne de table?

CREATE TABLE product (category INT NOT NULL, id INT NOT NULL, 
         price DECIMAL, 
         PRIMARY KEY(category, id)) ENGINE=INNODB; 
CREATE TABLE customer (id INT NOT NULL, 
         PRIMARY KEY (id)) ENGINE=INNODB; 
CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT, 
          product_category INT NOT NULL, 
          product_id INT NOT NULL, 
          customer_id INT NOT NULL, 
          PRIMARY KEY(no), 
          INDEX (product_category, product_id), 
          FOREIGN KEY (product_category, product_id) 
           REFERENCES product(category, id) 
           ON UPDATE CASCADE ON DELETE RESTRICT, 
          INDEX (customer_id), 
          FOREIGN KEY (customer_id) 
           REFERENCES customer(id)) ENGINE=INNODB; 

J'ai un problème similaire, mais je remarqué que vous ne pouvez pas changer de clé étrangère (ID client dans cet exemple) à défaut non signé, ensemble, ou longueur, etc. Je ne peux pas changer de table avec alter table, apparemment parce qu'ils sont dépendants et doivent être du même type. Y a-t-il un autre moyen de le faire?

Répondre

0

Vous pouvez supprimer la clé étrangère, modifier la colonne, puis ajouter à nouveau la clé étrangère.

Questions connexes