2016-04-02 10 views
2

kısa açıklaması: i bir çalışanın bir ay, bir sütun 1 girdisini, 2 sütununda (postgresql) yinelenen girişlere sahip olmaya nasıl kısıtlarsınız?

employee_id month  amount_spent 
E-124  JANUARY 200$ 
E-124  MARCH  14$ 
E-78   JANUARY 56$ 

I (E-124 arasında bir girdi kısıtlamak istediğiniz, Ocak için tek girdi olmalıdır, sütunlu tablo1 ay employee_id

amount_spent var , 14 $) E-124'in halihazırda Ocak ayı için giderlerini sunması gibi.

+2

Çalışan_kimliği ve ayında basit bir 'UNIQUE' endeksi bunu yapmalı ...? –

+1

CONSTRAINT emp_id_month UNIQUE (employee_id_id, ay) çalışacak mı? E-124, OCAK ve MART – Hardy

+0

@ Hardy: yes dışında herhangi bir ay için bir kayıt girebilir, evet, bu şekilde benzersiz bir dizin çalışır. Sadece dene. –

cevap

0

EXCLUSION Constraint uygulamalısınız.

Tanımı:

  • Dışlama kısıtlamaları herhangi iki satır belirtilen operatörleri kullanarak belirtilen sütun veya ifadeleriyle ilgili karşılaştırılır eğer, bu operatör karşılaştırmaların en az bir yanlış veya boş dönecektir emin olun.

Örnek:

CREATE TABLE COMPANY7(
    employee_id INT NOT NULL, 
    month   CHAR(10), 
    amount_spent REAL, 
    EXCLUDE USING gist 
    (employee_id WITH =, 
    month WITH <>) 
); 

Umarım, sizin için yardımcı olacaktır. :)

+0

Benzersiz bir dizin yeterlidir, dışlama kısıtlamasına gerek yoktur (verilen: özel bir kısıtlama özel bir kısıtlama özel durumudur, ancak yine de) –

İlgili konular