我有两张桌子:sys_users
和sys_roles
。
创建两个表后,我尝试使用以下语句创建外键:
Alter table `hr_001`.`sys_users`
add constraint
`constraint_user_role` foreign key (`Role`) references
`hr_001`.`sys_roles`(`ID`) on delete Set null
但它给了我以下错误
查询:更改表
hr_001
。sys_users
添加约束constraint_user_role
外键(Role
)引用hr_001
。sys_roles
(ID
...Error Code: 1005 Can't create table 'hr_001.#sql-2e5c_1f' (errno: 150)
我的表创建语句是
CREATE TABLE `sys_users` (
`ID` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
`Username` VARCHAR (100) NOT NULL,
`Password` VARCHAR (100) NOT NULL,
`Active` TINYINT (1) NOT NULL DEFAULT '1',
`Role` INT (11) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE = INNODB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8;
CREATE TABLE `sys_roles` (
`ID` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
`Role` VARCHAR (50) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE = INNODB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8;
有人可以为此提供帮助吗?
答案 0 :(得分:1)
如果您的引用已创建,请尝试使用ON DELETE SET NULL
而不是ON DELETE CASCADE
更改外键创建语法,然后查看此question并检查您的表格。
答案 1 :(得分:0)
抱歉,我忘记更改 sys_users 表角色 列未签名,因为 sys_roles ID 列标记为未签名,感谢大家快速回复。