MySQL:如何做外键?

时间:2010-08-08 00:07:36

标签: mysql database foreign-keys

我希望在表中有一个外键但我不知道该怎么做。我希望在“wall”表中有一个UserID列,以便我可以链接回来获取用户ID的详细信息等。我将如何进行此操作?

挂表: alt text http://img821.imageshack.us/img821/7701/screenshot20100808at010.png

用户表: alt text http://img375.imageshack.us/img375/7701/screenshot20100808at010.png

2 个答案:

答案 0 :(得分:3)

1)为了在userid表中有一个名为WALL的外键列,您需要创建列 - 如果该列已存在,则跳至#2:

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

如果要在不指定用户标识的情况下允许存在WALL记录:

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)

答案 1 :(得分:1)

将UserID列添加到Wall表,然后在其上创建外键。在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