好的,他们是相同的数据类型,而且有人发表评论之前的一切!
在用户桌上:
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(因为这是基本用户组)。
感谢您的帮助。
答案 0 :(得分:1)
是的,这是因为ON DELETE SET NULL
。您已将FK字段定义为NOT NULL
,它与FK定义冲突 - 删除操作被告知将字段设置为null,但该字段被定义为非null,因此......
MySQL确实“支持”ON DELETE SET DEFAULT
,但只接受语法,而不支持实际的默认操作。
您可能必须使该字段为空,并设置触发器,以便在字段变为空时将字段重置为所需的默认值。