错误1215外键无法添加

时间:2013-11-26 15:03:05

标签: mysql

好的,他们是相同的数据类型,而且有人发表评论之前的一切!

在用户桌上:

group_id TINYINT(3) UNSIGNED NOT NULL DEFAULT 1

在user_groups表上:

id TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT KEY

然后是我的sql语句:

ALTER TABLE user

ADD CONSTRAINT FK_user_group_id_user_groups_id
FOREIGN KEY (group_id) REFERENCES user_groups (id)
ON UPDATE CASCADE
ON DELETE SET NULL

我不知道是不是因为我在删除时将其设置为null,但如果删除user_group,我不想删除该用户。只需将group_id设置为null或..我不知道。 当我有这样的用户group_id列时,它正在工作:

group_id TINYINT(3) UNSIGNED NULL DEFAULT NULL

但我希望所有用户的默认组都为1(因为这是基本用户组)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

是的,这是因为ON DELETE SET NULL。您已将FK字段定义为NOT NULL,它与FK定义冲突 - 删除操作被告知将字段设置为null,但该字段被定义为非null,因此......

MySQL确实“支持”ON DELETE SET DEFAULT,但只接受语法,而不支持实际的默认操作。

您可能必须使该字段为空,并设置触发器,以便在字段变为空时将字段重置为所需的默认值。