Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

CREATE TRIGGER Sotrudnik_TRIG_ID . Не получается создать триггер

106dfs fdsfs Ученик (88), на голосовании 2 года назад
Делаю работу некоторую по вузу в такой программе, как ERBuilder, существуют некоторые таблицы, а так же триггеры( на увеличение счётчика в поле с первичным ключом при добавлении записи). По какой-то непонятной причине, ERBuilder отказывается переносить мои триггеры в postgresql 13(pgadmin 4). Выдаёт ошибку, что отношения "sotrudnik" не существует. В то же время, при неудачном переносе БД из ERBuilder в pgadmin4 таблицы переносятся. Т.е отношение сотрудник существует в любом случае. Скрипт на создание таблицы и триггера выглядит следующим образом:
CREATE TABLE Sotrudnik (
id_sotrudnik INTEGER NOT NULL,
Dolznost CHAR(40),
FIO CHAR(40),
Telephone CHAR(40),
Pasport CHAR(40),
id_magazine INTEGER,
CONSTRAINT PK_1 PRIMARY KEY (id_sotrudnik)
)
;


ALTER TABLE Sotrudnik
ADD CONSTRAINT FK_Rabotaet
FOREIGN KEY (id_magazine)
REFERENCES Magazine (id_magazine)
ON DELETE SET NULL
ON UPDATE CASCADE
;


CREATE SEQUENCE id_sotrudnik_gen;
CREATE OR REPLACE FUNCTION Sotrudnik_GEN_ID()
RETURNS TRIGGER AS
$Sotrudnik_GEN_ID$
BEGIN
NEW.id _sotrudnik = nextval('id_sotrudnik_gen'::regclass);
return NEW;
END;
$Sotrudnik_GEN_ID$
LANGUAGE plpgsql;
CREATE TRIGGER Sotrudnik_TRIG_ID
BEFORE INSERT ON Sotrudnik
FOR EACH ROW EXECUTE PROCEDURE Sotrudnik_GEN_ID();

Ниже есть скриншот ошибки и скрипта отношения "sotrudnik"

Дополнен 2 года назад
Проблема решена. на строке
BEFORE INSERT ON "название таблицы"
Необходимы были двойные кавычки, и всё заработало.
Голосование за лучший ответ
long latex glove Искусственный Интеллект (255977) 2 года назад
Можно попробовать написать таблицу со схемой. BEFORE INSERT ON users.Sotrudnik
106dfs fdsfsУченик (88) 2 года назад
не помогло... у меня заносится в схему public, но добавление ничем не помогло, к сожалению. сам текст триггера вроде правильно написан, я его переписывал раза 2
Похожие вопросы