我有一个包含2列的表,我从两个不同的表中复制过。我现在要做的是对下面显示的列名email和id赋予外键约束。
ALTER TABLE users_role_map
ADD CONSTRAINT FK_users_role_map
FOREIGN KEY (email) REFERENCES usert(email),
FOREIGN KEY (id) REFERENCES rolet(id)
ON UPDATE CASCADE
ON DELETE CASCADE;
我收到以下错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'FOREI
GN KEY (id) REFERENCES rolet(id)
ON UPDATE CASCADE
ON DELETE CASCADE' at line 4
答案 0 :(得分:33)
您没有在此语句中添加约束,您要添加约束 s :两个FOREIGN KEY子句中的每一个都表示一个单独的约束。但是,根据manual,您应该能够根据需要在单个ALTER TABLE语句中添加任意数量的外键约束。您只需要在每个约束之前包含ADD
。
请注意,约束名称单独应用于要添加的约束,因此如果希望第二个外键具有特定名称,则可能需要为其指定CONSTRAINT name
。与ON UPDATE/ON DELETE
相同:它们适用于直接位于它们之前的外键。
因此,更正后的陈述可能如下所示:
ALTER TABLE users_role_map
ADD CONSTRAINT FK_users_role_map1
FOREIGN KEY (email) REFERENCES usert(email)
ON UPDATE CASCADE
ON DELETE CASCADE,
ADD CONSTRAINT FK_users_role_map2
FOREIGN KEY (id) REFERENCES rolet(id)
ON UPDATE CASCADE
ON DELETE CASCADE;