Probuje napisać pewną funkcję.
Kod
DECLARE
kategorie_id_new integer;
drzewo_id_new text;
BEGIN
IF (TG_OP = 'DELETE') THEN
kategorie_id_new = OLD."kategorie_id";
ELSE
kategorie_id_new = NEW."kategorie_id";
END IF;
drzewo_id_new := "2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,1303,23,24,25,26,27,2
,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,5
,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,1351
1";
UPDATE kategorie as c SET wszystkich_produktow = (SELECT count(*) FROM produkty WHERE kategorie_id IN (drzewo_id_new)) WHERE id = kategorie_id_new;
RETURN NEW;
END;
kategorie_id_new integer;
drzewo_id_new text;
BEGIN
IF (TG_OP = 'DELETE') THEN
kategorie_id_new = OLD."kategorie_id";
ELSE
kategorie_id_new = NEW."kategorie_id";
END IF;
drzewo_id_new := "2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,1303,23,24,25,26,27,2
,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,5
,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,1351
1";
UPDATE kategorie as c SET wszystkich_produktow = (SELECT count(*) FROM produkty WHERE kategorie_id IN (drzewo_id_new)) WHERE id = kategorie_id_new;
RETURN NEW;
END;
General;nie chodzui o jedną rzecz. Czemu nie działa ten kawałek kodu kategorie_id IN (drzewo_id_new)
Gdy zamiast zmiennej drzewo_id_new wstawie ciąg liczb to wszystko jest ok ale gdy chce ten ciąg przypisać do zmiennej i nastepnie podaje tą zmienną jak powyżej to dostaje błąd przy użyciu tej funkcji:
Kod
BŁĄD: kolumna "2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,1303,23," nie istnieje
LINE 1: SELECT "2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21...
^
QUERY: SELECT "2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,1303,23,24,25,26,27,2
,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,5
,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,1351
1"
CONTEXT: PL/pgSQL function "liczba_produktow" line 14 at assignment
W poleceniu:
UPDATE "public"."produkty" SET "id"='401384', "nazwa"='ELSEVE Odżywka bez Spłukiwania 150 ml Nutrileum Intensywne Wygładzanie', "cena_min"=NULL, "cena_max"=NULL, "wszystkich_ofert"='0', "data_dodania"='2009-04-24 01:39:06.812163', "sklepy_id"='249', "kategorie_id"='1' WHERE "id"='401384'
LINE 1: SELECT "2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21...
^
QUERY: SELECT "2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,1303,23,24,25,26,27,2
,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,5
,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,1351
1"
CONTEXT: PL/pgSQL function "liczba_produktow" line 14 at assignment
W poleceniu:
UPDATE "public"."produkty" SET "id"='401384', "nazwa"='ELSEVE Odżywka bez Spłukiwania 150 ml Nutrileum Intensywne Wygładzanie', "cena_min"=NULL, "cena_max"=NULL, "wszystkich_ofert"='0', "data_dodania"='2009-04-24 01:39:06.812163', "sklepy_id"='249', "kategorie_id"='1' WHERE "id"='401384'
Pewnie dla kogoś kto w tym siedzi to banał więc bardzo proszę o pomoc
