我有一张团队新闻表:
另一张桌子叫团队:
teamnews表中的值是在用户登录到站点之前预先确定的。
假设当用户(teamName)登录时,我想更新teamID行,其中NewsID=1
并创建一个关系,以便如果我最终删除用户(teamName),则teamnews表中的teamID值将重置为零。
这可能吗?
请记住,我使用的是phpmyadmin,所以我不完全熟悉高级sql术语。
当我尝试这样做的时候,我得到并错误地:
错误如下:

最佳答案

您需要指定一个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实际上必须能够“设置null”—包含具有此约束的外键的字段不能设置为“不null”,否则它将失败,并出现错误“检查数据类型”。

10-06 13:44