2012-05-31 59 views
0

舉一個例子,從https://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html#.T8foMxTft0x修改表列外鍵?

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; 

我有類似的問題,但我注意到,你不能改變外鍵(用戶ID在這個例子中)爲unsigned,設置默認,或長度等。我不能用alter table來更改任何表格,顯然是因爲它們是依賴型的並且必須是相同的類型。有沒有其他辦法可以做到這一點?

回答

0

您可以刪除外鍵,改變列,然後再次添加外鍵。