Я сделал следующий запрос, который отлично работает сам по себе, но когда я вызываю его внутри триггерной функции, у меня возникает проблема.
select insert_new_grade('title0', return3_6(0), return3_6(1), return3_6(2), s.code)
FROM "student" as s
where find_st(s.grade)>=5;
insert_new_grade — это функция, которая вставляет новую строку в таблицу при каждом вызове.
Вот триггер:
CREATE OR REPLACE FUNCTION insert_d()
RETURNS TRIGGER AS $$
BEGIN
select insert_new_grade('title0', return3_6(0), return3_6(1), return3_6(2), s.code)
FROM "student" as s
where find_st(s.grade)>=5;
return new;
END;
$$ LANGUAGE plpgsql;
и вот функция вставки:
CREATE OR REPLACE FUNCTION insert_new_grade(title0 character(100), prof0 character(11), prof1 character(11))
RETURNS VOID AS $$
BEGIN
INSERT INTO "d_table"(thes0, title, grade, prof, secProf)
VALUES (null, title0, null, prof0, prof1);
END
$$
LANGUAGE 'plpgsql';
Есть ли способ заставить запрос работать внутри функции триггера? Если я использую выполнить вместо выбора, функция вставки не имеет результата. Я читал о курсорах, но я новичок в postgresql и не знаю, как это сделать. Любая помощь ?