Ich arbeite mit PostgreSQL Database Version 9.5 unter Windows 10 Pro x64.Bedingter Index in der PostgreSQL-Datenbank
In meiner Datenbank habe ich zwei Integer-Spalten eine für alle Menge und eine für die verfügbare Menge. Was ich im Grunde will, ist Einfügung oder Aktualisierung zu verhindern, wenn alle Menge weniger als Available Menge ist so habe ich diesen Index erstellt:
CREATE TABLE IF NOT EXISTS "Items"("Id" SERIAL PRIMARY KEY, "Name" VARCHAR(255) NOT NULL UNIQUE,
"Barcode" VARCHAR(255) NOT NULL UNIQUE, "AllQuantity" INTEGER NOT NULL, "AvailableQuantity" INTEGER NOT NULL,
"PurchasingPrice" NUMERIC NOT NULL, "SellingPrice" NUMERIC NOT NULL, "ProductionDate" DATE DEFAULT NULL, "ExpirationDate" DATE DEFAULT NULL,
"Description" TEXT DEFAULT NULL, "OtherDetails" TEXT DEFAULT NULL);
CREATE INDEX items_quantity ON "Items" (("AllQuantity" > "AvailableQuantity"));
Das Problem ist, dass der Index nicht funktioniert und ich kann die Tabelle einfügen mit einer Zeile, die alle Mengenwerte enthält, die kleiner als die verfügbare Menge sind. Ich habe gerade diese Abfrage versucht und es ist erfolgreich zurückgekehrt.
INSERT INTO "Items" VALUES(1,'some_item','1234567891234',15,20,20,40,'2016-08-08','2016-09-22');
Danke, es funktionierte wie ein Charme – Waxren