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

Помогите заполнить таблицы данными PostgresSQL

Kotova Ученик (9), на голосовании 2 месяца назад
CREATE TABLE IF NOT EXISTS Employee (
ID_Employee INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
LastName VARCHAR(100) NOT NULL,
FirstName VARCHAR(100) NOT NULL,
MiddleName VARCHAR(100),
Positions VARCHAR(100) NOT NULL,
DateOfBirth DATE NOT NULL,
ContactInformation VARCHAR(100) NOT NULL,
ID_EmployeeStatus INT NOT NULL REFERENCES EmployeeStatus (ID_EmployeeStatus)
);
CREATE TABLE IF NOT EXISTS Department (
ID_Department INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
Title VARCHAR(100) NOT NULL,
Address VARCHAR(100) NOT NULL,
ContactInformation VARCHAR(100) NOT NULL
);

CREATE TABLE IF NOT EXISTS EventType (
ID_EventType INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
Title VARCHAR(100) NOT NULL
);

CREATE TABLE IF NOT EXISTS Instructor (
ID_Instructor INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
FullName VARCHAR(100) NOT NULL,
Positions VARCHAR(100) NOT NULL,
ContactInformation VARCHAR(100) NOT NULL
);

CREATE TABLE IF NOT EXISTS TrainingProgram (
ID_TrainingProgram INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
Title VARCHAR(100),
Description TEXT NOT NULL
);

CREATE TABLE IF NOT EXISTS TrainingEvent (
ID_TrainingEvent INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
Title VARCHAR(100) NOT NULL,
Topic VARCHAR(100) NOT NULL,
Duration TIME NOT NULL,
StartDate DATE NOT NULL,
Description VARCHAR(100) NOT NULL,
ID_Department INT NOT NULL REFERENCES Department (ID_Department),
ID_EventType INT NOT NULL REFERENCES EventType (ID_EventType),
ID_Instructor INT NOT NULL REFERENCES Instructor (ID_Instructor),
ID_TrainingProgram INT NOT NULL REFERENCES TrainingProgram (ID_TrainingProgram)
);

CREATE TABLE IF NOT EXISTS EmployeeTrainingEvent (
ID_EmployeeTrainingEvent INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
ID_Employee INT NOT NULL REFERENCES Employee (ID_Employee),
ID_TrainingEvent INT NOT NULL REFERENCES TrainingEvent (ID_TrainingEvent),
ID_TrainingEvaluation INT NOT NULL REFERENCES TrainingEvaluation (ID_TrainingEvaluation),
DateOfParticipation DATE NOT NULL
);
CREATE TABLE IF NOT EXISTS TrainingEvaluation (
ID_TrainingEvaluation INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
Evaluation INT NOT NULL,
Commen TEXT NOT NULL,
DateOfEvaluation DATE NOT NULL
);

CREATE TABLE IF NOT EXISTS Certificate (
ID_Certificate INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
Title VARCHAR(100) NOT NULL,
DateOfIssue DATE NOT NULL,
ID_EmployeeTrainingEvent INT NOT NULL REFERENCES EmployeeTrainingEvent (ID_EmployeeTrainingEvent)
);

CREATE TABLE IF NOT EXISTS EmployeeStatus (
ID_EmployeeStatus INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
StatusName VARCHAR(100) NOT NULL
);
сама заполняю вылезает ошибка ERROR: Ключ (id_department)=(1) отсутствует в таблице "department".INSERT или UPDATE в таблице "trainingevent" нарушает ограничение внешнего ключа "trainingevent_id_department_fkey"

ОШИБКА: INSERT или UPDATE в таблице "trainingevent" нарушает ограничение внешнего ключа "trainingevent_id_department_fkey"
SQL-состояние: 23503
Подробности: Ключ (id_department)=(1) отсутствует в таблице "department".
Голосование за лучший ответ
IRQ Оракул (52925) 3 месяца назад
И чего непонятного?
KotovaУченик (9) 3 месяца назад
в чем заключается ошибка
IRQ Оракул (52925) Kotova, написано в чём она заключается
KotovaУченик (9) 3 месяца назад
CREATE TABLE IF NOT EXISTS Department (
ID_Department INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
Title VARCHAR(100) NOT NULL,
Address VARCHAR(100) NOT NULL,
ContactInformation VARCHAR(100) NOT NULL
);
Jurijus Zaksas Искусственный Интеллект (427555) 3 месяца назад
Сначала заполни таблицы, потом вводи ограничения на внешние ключи. В противном случае надо соблюдать строго порядок заполнения и подтверждать транзакции после заполнения каждой - задолбишься это делать на начальном этапе.
KotovaУченик (9) 3 месяца назад
Можете обьяснить как вводить ограничения на внешние ключи, какой должен быть порядок действий заполнения таблицы
Jurijus Zaksas Искусственный Интеллект (427555) >Можете обьяснить как вводить ограничения на внешние ключи, Что значит "объяснить"? Ты ж их уже ввела, чего тебе еще объяснить? Просто не делай так. >какой должен быть порядок действий заполнения таблицы Ох, такой, который не нарушает ограничения на внешние ключи. Когда добавляешь внешний ключ, соответствующий ему первичный уже должен существовать в соотв. таблице. Начинай с таблиц, где нет внешних ключей, дальше уже как пойдет.
Анонимус Мыслитель (9625) 3 месяца назад
Например, вы можете сначала вставить данные в таблицу "department" следующим образом:
 INSERT INTO Department (Title, Address, ContactInformation) 
VALUES ('Отдел 1', 'Адрес 1', 'Контактная информация 1');
Затем, после успешной вставки данных в таблицу "department", вы можете вставить данные в таблицу "trainingevent", учитывая существующие значения внешнего ключа:
 INSERT INTO TrainingEvent (Title, Topic, Duration, StartDate, Description, ID_Department, ID_EventType, ID_Instructor, ID_TrainingProgram) 
VALUES ('Событие 1', 'Тема 1', '01:30:00', '2022-01-01', 'Описание 1', 1, 1, 1, 1);
Повторите этот процесс для всех таблиц, чтобы убедиться, что вставка данных происходит в правильном порядке и учитывает связи между таблицами.
Александр Искусственный Интеллект (292112) 3 месяца назад
прикольно
ты создаёшь таблицу только если она ещё не существует... и тебе типа пофиг если существует таблица с таким же именем и возможно с разными колонками...
весело...
святая наивность...
Похожие вопросы