sidewinder
Guest
Ничего не понимаю в синтаксисе ... (вопрос по функциям и триггерам)
Задача такая, Надо при обновлении даных некой таблицы вносить изменеия в другую таблицу,в строрку с именем таблицы в которой такие изменения провелись.
Для этого создаётся такая функция, которая должна стать триггером для таблицы, которой пока нет.
CREATE FUNCTION upd_test_tabl() RETURNS opaque AS' BEGIN
UPDATE tests SET valid = ''f'' WHERE table_r = TG_RELNAME;
RETURN NEW;
END;' LANGUAGE 'plpgsql';
Вот тут должна создаваться таблица и триггрер. Имя таблицы, передаётся как параметр ($3) функции.
CREATE FUNCTION cr_test(text, text, name,name, integer,integer) RETURNS boolean AS'
BEGIN
INSERT INTO "tests" (name_r, name_e,table_r,table_e,q_numbers,prep) VALUES ($1,$2,$3,$4,$5,$6);
CREATE TABLE "$3" (qid serial,target integer,qp varchar(64));
CREATE TRIGGER up_test AFTER INSERT OR UPDATE ON "$3" FOR EACH ROW EXECUTE PROCEDURE upd_test_tabl();
RETURN ''t'';
END;
' LANGUAGE 'plpgsql';
Так вот проблема в синтаксисе:
syntax error at or near "$1" at character 15
Что я непонимаю, $1 - совсем не 15-ый символ в строке, так где собственно ошибка?
Задача такая, Надо при обновлении даных некой таблицы вносить изменеия в другую таблицу,в строрку с именем таблицы в которой такие изменения провелись.
Для этого создаётся такая функция, которая должна стать триггером для таблицы, которой пока нет.
CREATE FUNCTION upd_test_tabl() RETURNS opaque AS' BEGIN
UPDATE tests SET valid = ''f'' WHERE table_r = TG_RELNAME;
RETURN NEW;
END;' LANGUAGE 'plpgsql';
Вот тут должна создаваться таблица и триггрер. Имя таблицы, передаётся как параметр ($3) функции.
CREATE FUNCTION cr_test(text, text, name,name, integer,integer) RETURNS boolean AS'
BEGIN
INSERT INTO "tests" (name_r, name_e,table_r,table_e,q_numbers,prep) VALUES ($1,$2,$3,$4,$5,$6);
CREATE TABLE "$3" (qid serial,target integer,qp varchar(64));
CREATE TRIGGER up_test AFTER INSERT OR UPDATE ON "$3" FOR EACH ROW EXECUTE PROCEDURE upd_test_tabl();
RETURN ''t'';
END;
' LANGUAGE 'plpgsql';
Так вот проблема в синтаксисе:
syntax error at or near "$1" at character 15
Что я непонимаю, $1 - совсем не 15-ый символ в строке, так где собственно ошибка?