我有以下表格: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謝謝,我已經編輯了這個問題 –