I am writing a trigger for a table in PostgreSQL 14 with which I could get the amounts I need, add them up and write them from a row. But I can't write data to variables after SELECT in any way. Here is my code:
CREATE TABLE folder(
Id uuid unique,
Url varchar(255),
Date timestamp,
ParentId uuid,
Size int
);
CREATE TABLE file(
Id uuid unique,
Url varchar(255),
Date timestamp,
ParentId uuid,
Size int,
FOREIGN KEY (ParentId) REFERENCES Folder (Id) ON DELETE CASCADE
);
CREATE OR REPLACE FUNCTION update_dates_and_price_update_folder() RETURNS trigger AS $update_dates_and_price_update_folder$
DECLARE
folders_sum integer;
files_sum integer;
BEGIN
SELECT (sum(size)) FROM file WHERE parentId = NEW.id INTO folders_sum;
SELECT (sum(size)) FROM folder WHERE parentId = NEW.id INTO files_sum;
NEW.size = folders_sum + files_sum;
UPDATE folder set date = NEW.date WHERE id = NEW.parentId OR id = OLD.parentId;
RETURN NEW;
END;
$update_dates_and_price_update_folder$ LANGUAGE plpgsql;
CREATE OR REPLACE TRIGGER update_data_folder AFTER UPDATE
ON folder
FOR ROW
EXECUTE FUNCTION update_dates_and_price_update_folder();
I checked the values of variables via RAISE NOTICE, both variables are always null. If you make such a request:
SELECT (sum(size)) FROM file WHERE parentId = some_id;
It's not null. select response