修改表 添加约束

36

用户和属性表已经正确创建

CREATE TABLE Properties
(
    ID int AUTO_INCREMENT,
    language int,
    stonecolor int,
    gamefield int,
    UserID int,
    PRIMARY KEY(ID),
    FOREIGN KEY(language) REFERENCES Language(ID),
    FOREIGN KEY(stonecolor) REFERENCES StoneColor(ID),
    FOREIGN KEY(gamefield) REFERENCES GameField(ID)
) ENGINE = INNODB;

CREATE TABLE User
(
    ID int AUTO_INCREMENT,
    vorname varchar(30) NOT NULL,
    name varchar(30) NOT NULL,
    email varchar(40) NOT NULL,
    password varchar(40) NOT NULL,
    nickname varchar(15) NOT NULL,
    score int,
    isadmin int DEFAULT 0,
    gamesPlayed int,
    properties int NOT NULL,
    PRIMARY KEY(ID),
    UNIQUE (email),
    UNIQUE (nickname)

) ENGINE = INNODB;

但是 ALTER TABLE User 无效。

ALTER TABLE User 
(
    ADD CONSTRAINT userPropertie
    FOREIGN KEY(properties)
    REFERENCES Properties(ID)
)

不知道为什么会出错?

我用这个作为参考:http://www.w3schools.com/sql/sql_foreignkey.asp

错误1064 - 你的SQL语法有误,请检查与你的MySQL服务器版本相对应的手册,以获取在第2行使用的正确语法,详细信息:'( ADD CONSTRAINT userPropertie FOREIGN KEY(properties) REFERENCES Properties('。


我想建议更改标题,以帮助遇到此错误的人找到这个线程,例如“ALTER TABLE ADD CONSTRAINT 语法错误”可能会有所帮助。 - stramin
3个回答

100
省略括号:
ALTER TABLE User 
    ADD CONSTRAINT userProperties
    FOREIGN KEY(properties)
    REFERENCES Properties(ID)

4
ALTER TABLE `User`
ADD CONSTRAINT `user_properties_foreign`
FOREIGN KEY (`properties`)
REFERENCES `Properties` (`ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

0
alter table User 
    add constraint userProperties
    foreign key (properties)
    references Properties(ID)

2
请尝试添加一段解释,说明这段代码如何解决了问题。 - Arghya Sadhu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接