我来自Oracle背景,正在使用MySQL数据库建立一个快速项目。我遇到了添加简单外键约束的问题。有人可以帮我解释一下我的语法吗?
/************************************************************/
/*tables/schema*/
/*Familes*/
CREATE TABLE IF NOT EXISTS Familes(
fID INTEGER PRIMARY KEY AUTO_INCREMENT,
signature blob DEFAULT NULL,
signatureTS TIMESTAMP,
createdTS TIMESTAMP NOT NULL
) ENGINE=INNODB;
/*familyMembers*/
CREATE TABLE IF NOT EXISTS FamilyMembers(
fmID INTEGER PRIMARY KEY AUTO_INCREMENT,
fName VARCHAR(255) NOT NULL,
lName VARCHAR(255) NOT NULL,
age INTEGER NOT NULL,
sex BIT(1) NOT NULL, /*0 indicates male, 1 indicates female*/
ssNum VARCHAR(9) UNIQUE NOT NULL,
recievedBig BIT(1) DEFAULT 0,
recievedNormal BIT(1) DEFAULT 0,
recievedStocking BIT(1) DEFAULT 0,
famID INTEGER,
INDEX fIndex (famID), /*index for optimization on searching*/
FOREIGN KEY (famID) REFERENCES Families(fID)
ON DELETE CASCADE
/*foreign key constraint, not deferred b/c family should always exist first*/
) ENGINE=INNODB;
我可以很好地创建第一个表。当我评论fk时,我也可以创建第二个。但是,当我离开fk约束时,我得到了以下错误:
错误代码:1215。无法添加外键约束
这应该是一个快速解决方案。谢谢你的帮助。