我有两列唯一的电子邮件和serverip,但是当我尝试仅在没有serverip的情况下在电子邮件中插入数据时,它会引发错误Duplicate entry '' for 'serverip'
我尝试制作电子邮件和serverip DEFAULT NULL但是如果我尝试只插入一个colum电子邮件,它仍然会引发错误。
CREATE TABLE IF NOT EXISTS `user` (
`id` int(16) NOT NULL AUTO_INCREMENT,
`email` varchar(55) DEFAULT NULL,
`created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`cname` varchar(55) NOT NULL,
`serverip` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
UNIQUE KEY `serverip` (`serverip`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
我该怎么做?
答案 0 :(得分:1)
将电子邮件发送到NOT NULL,将serverip发送到DEFAULT NULL,现在当我尝试将数据插入到电子邮件中时,它会抛出serverip上的错误重复条目
这是因为serverip
字段定义为包含default null
除此之外,该字段也是unique
。
unique
字段的生命周期只能包含一次特定值。
当您在insert
语句中避开该字段时,default
子句将会出现,并且引擎将尝试分配default
null
值为了这个领域。
但由于该字段在表格中已有NULL
条目,因此无法接受另一个相同的值,因为它必须在unique
字段数据上保持serverip
。
因此你得到了错误。
如果您仍希望在unique
数据上保留serverip
,以某种方式允许空白,则必须
unique
约束。before insert/update trigger
以检查是否有此值
已经存在与否。