我有以下表格:Postrgersql + Django的:NULL值会导致IntegrityError:重复键值违反唯一约束
Column | Type | Modifiers
----------------+-----------------------------+---------------------------------------------------------------
user_id | bigint | not null default nextval('employee_user_id_seq'::regclass)
name | character varying(50) | not null
phonenumber | character varying(20) | not null
phonenumber2 | character varying(20) |
email | character varying(75) |
Indexes:
"employee_pkey" PRIMARY KEY, btree (user_id)
"employee_email_key" UNIQUE CONSTRAINT, btree (email)
"employee_phonenumber2_key" UNIQUE CONSTRAINT, btree (phonenumber2)
"employee_phonenumber_email_key" UNIQUE CONSTRAINT, btree (phonenumber, email)
"employee_phonenumber_key" UNIQUE CONSTRAINT, btree (phonenumber)
在models.py:
class Employee(models.Model):
user_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=50)
phonenumber = models.CharField(max_length=20, unique=True)
phonenumber2 = models.CharField(max_length=20, unique=True)
email = models.EmailField(blank=True, unique=True)
使用Django我已经插入了没有phonenumber2的员工进入表格。它会顺利的事业,这是第NULL,则在第二次尝试第一次我得到的错误:
IntegrityError: duplicate key value violates unique constraint "employee_phonenumber2_key"
DETAIL: Key (phonenumber2)=() already exists.
从我的理解NULL不应被视为限制值,我想要实现的是同一电话号码或电话号码与电子邮件的组合不能为不同的员工复制。
我该如何解决这个问题?
“models.py”。疯狂猜测,你使用的是Django? (这是一件很好的事,或者至少是标签)。 –
@CraigRinger谢谢,我已经编辑了这个问题 –