Прерывание текущей транзакции в PostgreSQL
Прописал структуру базы данных, но столкнулся с проблемой, что слетает какая-то транзакция и весь процесс прерывается. Ошибку не вижу. Буду рад, если поможете.
-- This script was generated by the ERD tool in pgAdmin 4.
-- Please log an issue at https://redmine.postgresql.org/projects/pgadmin4/issues/new if
you find any bugs, including reproduction steps.
BEGIN;
CREATE TABLE IF NOT EXISTS public."Студенты"
(
"Номер студенческого билета" bigint NOT NULL,
"Фамилия" character varying(30) NOT NULL,
"Имя" character varying(30) NOT NULL,
"Отчество" character varying(30),
"Номер группы" character varying(10),
"Дата рождения" date NOT NULL,
"Почта" character varying(30) NOT NULL,
"Дата выпуска" date,
"Название дипломной работы" character varying(50) NOT NULL,
PRIMARY KEY ("Номер студенческого билета")
);
CREATE TABLE IF NOT EXISTS public."Группа"
(
"Номер группы" character varying(10) NOT NULL,
"Форма обучения" character varying(20) NOT NULL,
"Номер структурного подразделения" bigint NOT NULL,
PRIMARY KEY ("Номер группы")
);
CREATE TABLE IF NOT EXISTS public."Структурное подразделение"
(
"Номер подразделения" bigint NOT NULL,
"Тип подразделения" character varying(64) NOT NULL,
"Полное название" text NOT NULL,
"Сокращенное название" character varying(20),
"Руководитель" character varying(40) NOT NULL,
PRIMARY KEY ("Номер подразделения")
);
CREATE TABLE IF NOT EXISTS public."Дисциплтина"
(
"Номер дисциплины" bigint NOT NULL,
"Название дисциплины" character varying(40) NOT NULL,
"Структурное подразделение" bigint NOT NULL,
"Преподаватель" bigint NOT NULL,
PRIMARY KEY ("Номер дисциплины")
);
CREATE TABLE IF NOT EXISTS public."Диплом"
(
"Название дипломной раборты" character varying(50) NOT NULL,
"Студент" bigint NOT NULL,
"Курирующий преподаватель" bigint NOT NULL,
"Дисциплина" bigint NOT NULL,
"Дата защиты" date NOT NULL,
"Оценка" bigint NOT NULL,
PRIMARY KEY ("Название дипломной раборты")
);
CREATE TABLE IF NOT EXISTS public."Преподаватель"
(
"Номер преподавателя" bigint NOT NULL,
"Фамилия" character varying(30) NOT NULL,
"Имя" character varying(30) NOT NULL,
"Отчество" character varying(30),
"Ученая степень" character varying(30),
"Ученое звание" character varying(40),
"Должность" character varying(30) NOT NULL,
"Стаж" bigint NOT NULL,
PRIMARY KEY ("Номер преподавателя")
);
ALTER TABLE IF EXISTS public."Студенты"
ADD FOREIGN KEY ("Название дипломной работы")
REFERENCES public."Диплом" ("Название дипломной раборты") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
ALTER TABLE IF EXISTS public."Студенты"
ADD FOREIGN KEY ("Номер группы")
REFERENCES public."Группа" ("Номер группы") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
ALTER TABLE IF EXISTS public."Группа"
ADD FOREIGN KEY ("Номер структурного подразделения")
REFERENCES public."Структурное подразделение" ("Номер подразделения") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
ALTER TABLE IF EXISTS public."Структурное подразделение"
ADD FOREIGN KEY ("Руководитель")
REFERENCES public."Преподаватель" ("Номер преподавателя") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
ALTER TABLE IF EXISTS public."Дисциплтина"
ADD FOREIGN KEY ("Структурное подразделение")
REFERENCES public."Структурное подразделение" ("Номер подразделения") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
ALTER TABLE IF EXISTS public."Дисциплтина"
ADD FOREIGN KEY ("Преподаватель")
REFERENCES public."Преподаватель" ("Номер преподавателя") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
ALTER TABLE IF EXISTS public."Диплом"
ADD FOREIGN KEY ("Дисциплина")
REFERENCES public."Дисциплтина" ("Номер дисциплины") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
ALTER TABLE IF EXISTS public."Диплом"
ADD FOREIGN KEY ("Студент")
REFERENCES public."Студенты" ("Номер студенческого билета") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
ALTER TABLE IF EXISTS public."Преподаватель"
ADD FOREIGN KEY ("Номер преподавателя")
REFERENCES public."Диплом" ("Курирующий преподаватель") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
END;
Источник: Stack Overflow на русском