使用Sequel Pro无法使外键字段可以为空

时间:2012-07-24 21:43:57

标签: mysql foreign-keys sequelpro

我将我的用户表定义为外键,但不一定需要设置它们。即一定不能有相关记录。

在我的MySQL编辑器(Sequel Pro)中,我无法使addressId“允许为空”。它忽略了输入。我正在使用最新版本。

当我在User表中创建一个没有addressId的新条目时,它会显示“无法添加或更新子行:外键约束失败......”。但我希望能够添加没有地址的用户!这可能吗?

或者我应该简单地删除外键?这有什么缺点?

CREATE TABLE `User1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(200) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `password` char(32) DEFAULT NULL,
  `addressId` int(11) NULL DEFAULT '0',
  `created` datetime DEFAULT NULL,
  `activated` datetime DEFAULT NULL,
  `lastLogin` datetime DEFAULT NULL,
  PRIMARY KEY (`id`,`addressId`),
  KEY `FK_User_Locale` (`localeId`),
  KEY `FK_User_Address` (`addressId`),
  CONSTRAINT `FK_User_Address` FOREIGN KEY (`addressId`) REFERENCES `Address` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1 个答案:

答案 0 :(得分:1)

为什么不通过设置为foreign_key_checks = 0来禁用foreign_key_checks

否则,如果不符合您的要求,您可以DROP约束!

  

如果设置为1(默认值),InnoDB表的外键约束   检查。如果设置为0,则忽略它们。禁用外键   检查对于按顺序重新加载InnoDB表非常有用   与父母/子女关系所要求的不同。