Iemand die me hiermee kan helpen? Ik heb de volgende tabel:
Ik heb een unique index op 6 kolommen (zie onderstaand voorbeeld). price_old, price en price_alt kunnen NULL zijn, zolang price OF price_alt maar gevuld is (zie bovenstaand CONSTRAINT). Echter negeert SQL de unique constraint zodra één van de 6 kolommen NULL als waarde bevat. Dus onderstaande CONSTRAINT werkt dan niet meer:
Ik heb al een tip gekregen om naar het volgende voorbeeld te kijken (exclude using gist), maar ik zou niet weten hoe dit me kan helpen of hoe dit toe te passen.
Iemand die kan helpen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
| CREATE TABLE offer (
offer_id serial PRIMARY KEY
, product_id int NOT NULL REFERENCES product
, price_old numeric(10,2);
, price numeric(10,2);
, price_alt text -- overrules price if present
, valid_from timestamp NOT NULL
, valid_to timestamp -- optional
-- more attributes of the offer
, CONSTRAINT some_kind_of_price_required
CHECK (price IS NOT NULL OR price_alt IS NOT NULL)
); |
Ik heb een unique index op 6 kolommen (zie onderstaand voorbeeld). price_old, price en price_alt kunnen NULL zijn, zolang price OF price_alt maar gevuld is (zie bovenstaand CONSTRAINT). Echter negeert SQL de unique constraint zodra één van de 6 kolommen NULL als waarde bevat. Dus onderstaande CONSTRAINT werkt dan niet meer:
code:
1
2
| ALTER TABLE offers ADD CONSTRAINT offer_unique_index UNIQUE(product_id, price_old, price, price_alt, valid_from, valid_to); |
Ik heb al een tip gekregen om naar het volgende voorbeeld te kijken (exclude using gist), maar ik zou niet weten hoe dit me kan helpen of hoe dit toe te passen.
code:
1
2
3
| alter table item add constraint check_manufactured_range exclude using gist (type_id with =, manufactured_during with &&); |
Iemand die kan helpen?