2011-12-01 41 views
2

我有一个teamnews表:enter image description hereMySQL:如何在使用默认值设置表值之后更新外键字段并创建关系?

而另一个叫团队表: enter image description here

在teamnews表中的数值前一个用户登录到该网站预定。 可以说,当我一个用户(teamName)标志要更新的teamID排在那里NewsID = 1 并创建一个关系,所以,如果我最终删除用户(teamName)在teamNews表teamID值复位至零。

这可能吗? 请记住我正在使用phpMyAdmin,所以我不完全熟悉高级SQL术语。

当我尝试这样做,我得到和错误:enter image description here

这里的错误:

enter image description here

回答

1

你需要指定一个FOREIGN KEY。您可以通过运行以下命令来添加它:

ALTER TABLE teamnews 
ADD CONSTRAINT fk_teamID 
    FOREIGN KEY (TeamID) 
    REFERENCES team (teamID) 
    ON DELETE SET NULL; 

这会使用外键在表格之间建立正式的关系。 ON DELETE SET NULL是对你很重要的部分。这表示,只要删除了引用表中的任何项目(本例中为team),那么此表中具有该团队ID的所有行都应该将该字段设置为空,即—正是您要查找的内容。

请注意,如果您使用的是InnoDB数据库引擎(不MyISAM引擎),这只会工作。你可能可以通过phpmyadmin改变它(我不熟悉phpmyadmin,所以我无法帮助你了解细节)。

另外请注意,为此,MySQL必须能够“SET NULL” - 包含具有此约束的外键的字段不能设置为“NOT NULL”,否则它将失败错误说“检查数据类型”。

+0

当我尝试这个时,我得到一个错误 – NeverPhased

+0

我认为问题在于'teamnews'表中'teamID'字段被设置为“NOT NULL”。请更新它以允许空值(并将默认值设置为“NULL”而不是“0”)。然后尝试再次添加外键。 –

相关问题