2010-08-08 45 views

回答

3

1)为了能在WALL表称为userid一个外键列,你需要创建一个列 - 跳到#2如果列已经存在:

ALTER TABLE WALL 
    ADD COLUMN userid INT(25) NOT NULL 

如果你想允许在没有用户ID是特异性存在WALL记录IED:

ALTER TABLE WALL 
    ADD COLUMN userid INT(25) NULL 

2)现在你add the foreign key constraint

ALTER TABLE WALL 
ADD FOREIGN KEY (userid) REFERENCES USERS(userid) 
+0

感谢到目前为止,但是我得到了“#1064 - 你的SQL语法有错误;检查与你的MySQL服务器版本相对应的手册, '参考用户(用户id)'在第2行“ 当我运行修改表墙 添加国际密钥用户名参考用户(用户ID) – ritch 2010-08-08 00:24:32

+0

@ritch:固定 - 我忘了把方括号附近的FK列名称。 – 2010-08-08 00:30:41

+0

ADD FOREIGN KEY后在括号“userId”的周围放置圆括号。括号不是可选的,也不是多余的。你可以有一个由多列组成的外键,并且它们都会进入括号内(colA,colB)。 – siride 2010-08-08 00:32:05

1

添加一个用户ID列在墙壁上表,然后在其上创建一个外键。在SQL中,它看起来像这样:

CREATE TABLE Wall (
    ... 
    UserID INT, 
    ... 
    FOREIGN KEY (UserID) REFERENCES User (UserID) ON UPDATE CASCADE ON DELETE RESTRICT, 
    ... 
) ENGINE=InnoDB; 

请注意,您可能不想要ON DELETE RESTRICT。这是最严格的选择。在MySQL网站上阅读它:http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

+0

OP必须删除现有的WALL表以便使用您提供的内容,或者重命名现有的表,以便可以创建新表并将数据复制过来。 – 2010-08-08 00:17:55

+0

我想在表格结构中说清楚。我考虑过使用ALTER TABLE语法,但我认为这会让它变得不那么明显。六合一,六合一,其他所有。 – siride 2010-08-08 00:18:42

+0

+1:用于演示如何在CREATE TABLE语句中实现FK – 2010-08-08 00:23:53