Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 修改表列外键?_Mysql_Sql_Foreign Keys - Fatal编程技术网

Mysql 修改表列外键?

Mysql 修改表列外键?,mysql,sql,foreign-keys,Mysql,Sql,Foreign Keys,举一个例子: 我有一个类似的问题,但我注意到您不能将外键(本例中的客户ID)更改为unsigned、set default或length等。我不能使用alter table更改任何一个表,显然是因为它们是依赖的,并且必须是相同的类型。还有其他方法吗?您可以删除外键,更改列,然后再次添加外键 CREATE TABLE product (category INT NOT NULL, id INT NOT NULL, price DECIMAL,

举一个例子:


我有一个类似的问题,但我注意到您不能将外键(本例中的客户ID)更改为unsigned、set default或length等。我不能使用alter 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;