我刚刚知道mysql MyISAM
引擎不支持外键。但是我已经看到了几个声明foreign
键的示例,如下所示:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
由于不支持外键,我们将无法在MyISAM引擎中获得on update
和on delete
等好处。我的问题是,为什么我们要在MyISAM引擎中将字段声明为外键?
使用 myisam 表类型声明外键是没有意义的,因为那里不存在此功能。Mysql 可以解析 myisam 表类型的外键语法(这意味着如果遇到 fk 定义,不会引发错误消息(,这使得从其他数据库产品或表引擎迁移更容易,因为您不必编辑 create table
语句来删除它们。