我有一个表,其中有 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
您没有在此语句中添加约束,而是添加约束s:两个 FOREIGN KEY 子句中的每一个都表示一个单独的约束。尽管如此,根据manual http://dev.mysql.com/doc/refman/5.1/en/alter-table.html,您应该能够根据需要在单个 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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)