powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ошибка при создании триггерной функции
3 сообщений из 3, страница 1 из 1
Ошибка при создании триггерной функции
    #38665744
klis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Только начала работать с бд и не очень хорошо понимаю, как и чего. Есть база с таблицами
headt_f(fio,tab_n,class_n,class_index, work_age);
headt_h(fio,tab_n,class_n,class_index, work_age);-информация о преподах
prog_f(tab_n,name, count_les);
prog_h(tab_n,name, count_les)-о программе класса препода, count_less-количество часов какого-то предмета;
Я пытаюсь написать ограничение общего вида: в каждой параллели общее количество предметов различается не более чем на 2(всего 2 класса в параллели). Есть такая триггерная функция
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
CREATE OR REPLACE FUNCTION parallel_class1() RETURNS TRIGGER AS 
$BODY$
DECLARE
count_f integer;
count_h integer;
class_n1 integer;
tab_n1 integer;
count_les1 integer;
name1 character varying(100);
BEGIN
IF    TG_OP = 'INSERT' THEN
tab_n1=NEW.tab_n;
c=NEW.count_les;
name1=NEW.name;
class_n1=(SELECT headt_f.class_n FROM headt_f WHERE feadt_f.tab_n=tab_n1);
count_f=(SELECT SUM(count_les)
FROM prog_f NATURAL JOIN headt_f WHERE headt_f.class_n=class_n1);

count_h=(SELECT SUM(count_les)
FROM prog_h NATURAL JOIN headt_h WHERE headt_h.class_n=class_n1);

IF abs(count_f-count_h)<=2 THEN
INSERT INTO prog_f(tab_n,name,count_les) VALUES(tab_n1,name1,name1);
RETURN NEW;
END IF;
END IF;
END;
$BODY$
LANGUAGE plpgsql;
CREATE TRIGGER trig1
BEFORE INSERT ON prog_f FOR EACH ROW 
EXECUTE PROCEDURE parallel_class1();



Синтаксическая ошибка уже на 1 строчке где-то в районе RETURNS. Но судя по прочитанным мою книжкам оформила функцию я правильно. Помогите разобраться.
PC. может, я не там создаю ее? Делаю это в специальном "отделе" триггерные функции. Триггер,как я понимаю, должен быть написан там же.
...
Рейтинг: 0 / 0
Ошибка при создании триггерной функции
    #38666278
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
klis,

не знаю, что за специальный отдел с триггерными функциями, данный код можно выполнять как и любой sql запрос. должно ругаться вот так:

Код: sql
1.
2.
ERROR:  "c" is not a known variable
LINE 13: c=NEW.count_les;
...
Рейтинг: 0 / 0
Ошибка при создании триггерной функции
    #38667496
klis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexius,спасибо)уже разобралась)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Ошибка при создании триггерной функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]