Mysql Can';不要创建表,因为它们都相互关联。外键约束的格式不正确
我有三张相互依赖的桌子。因此,我无法创建表,因为外键引用无法在我放置create语句的任何位置找到引用表 错误1005-Kann TabelleMysql Can';不要创建表,因为它们都相互关联。外键约束的格式不正确,mysql,sql,foreign-keys,Mysql,Sql,Foreign Keys,我有三张相互依赖的桌子。因此,我无法创建表,因为外键引用无法在我放置create语句的任何位置找到引用表 错误1005-Kann Tabellecoopr\u localcharactersnicht erzeugen (错误150“外键约束格式不正确”) 只选择一个表作为没有外键约束的主表,另外两个表作为依赖于主表且具有外键的互补表,如以下示例所示: CREATE TABLE tblAddress ( AddressID INT NOT NULL Primary Key,
coopr\u local
characters
nicht erzeugen(错误150“外键约束格式不正确”)
只选择一个表作为没有外键约束的主表,另外两个表作为依赖于主表且具有外键的互补表,如以下示例所示:
CREATE TABLE tblAddress (
AddressID INT NOT NULL Primary Key,
Country VARCHAR(1000),
State VARCHAR(1000),
City VARCHAR(1000),
Zip VARCHAR(10),
AddrLine1 VARCHAR(1000),
AddrLine2 VARCHAR(1000)
)
CREATE TABLE PersonA (
PersonID INT NOT NULL Primary Key,
FirstName VARCHAR(200),
LastName VARCHAR(200),
--OtherColumns
AddressID INT,
CONSTRAINT fk_Address FOREIGN KEY (AddressID)
REFERENCES tblAddress(AddressID)
)
CREATE TABLE PersonB (
PersonID INT NOT NULL Primary Key,
FirstName VARCHAR(200),
LastName VARCHAR(200),
--OtherColumns
AddressID INT,
CONSTRAINT fk_Address FOREIGN KEY (AddressID)
REFERENCES tblAddress(AddressID)
)
首先创建所有表,然后添加外键 与
您没有描述您试图建模的内容,但根据我的猜测,您可能想建模一些游戏,其中有可以分组的角色 为此,你会有一张小队的桌子:
CREATE TABLE squads
(id integer
NOT NULL
AUTO_INCREMENT,
name varchar(255),
callsign varchar(10),
PRIMARY KEY (id));
如果角色只能是一个团队的成员,则在角色表中有对该团队的引用:
CREATE TABLE characters
(id integer
NOT NULL
AUTO_INCREMENT,
character_0 text,
character_1 text,
character_2 text,
squad integer,
PRIMARY KEY (id),
FOREIGN KEY (squad)
REFERENCES squads
(id));
CREATE TABLE characters
(id integer
NOT NULL
AUTO_INCREMENT,
character_0 text,
character_1 text,
character_2 text,
PRIMARY KEY (id));
在这种情况下,一个角色不能属于多个团队,你已经完成了,不需要另一张桌子
如果角色可能属于多个团队,则在角色表中没有对团队的引用:
CREATE TABLE characters
(id integer
NOT NULL
AUTO_INCREMENT,
character_0 text,
character_1 text,
character_2 text,
squad integer,
PRIMARY KEY (id),
FOREIGN KEY (squad)
REFERENCES squads
(id));
CREATE TABLE characters
(id integer
NOT NULL
AUTO_INCREMENT,
character_0 text,
character_1 text,
character_2 text,
PRIMARY KEY (id));
与角色表中对团队的引用不同,您将有第三个表,一个链接角色和团队的表:
CREATE TABLE squads_characters
(squad integer,
character integer,
PRIMARY KEY (squad,
character),
FOREIGN KEY (squad)
REFERENCES squads
(id),
FOREIGN KEY (character)
REFERENCES characters
(id));