luc*_*ter 11 mysql mysql-error-1064
我有一个表有两列,我从两个不同的表复制.我现在要做的是给下面显示的列名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;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
And*_*y M 33
你是不是在这个声明中加入一个约束,要添加约束小号:每两个foreign key子句意味着一个单独的约束.但是,根据手册,您应该能够根据需要在单个ALTER TABLE语句中添加任意数量的外键约束.您只需要ADD在每个约束之前包含.
请注意,约束名称单独应用于要添加的约束,因此如果希望第二个外键具有特定名称,则可能需要指定第二个外键.同样:它们适用于直接位于它们之前的外键.CONSTRAINT nameON 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;
Run Code Online (Sandbox Code Playgroud)