SQL выдает ошибку
Нужно найти в коде ( код снизу) выдает что:
Сообщение 1770, уровень 16, состояние 0, строка 5
Внешний ключ "FK__orders__order_fo__0F624AF8" указывает на недопустимый столбец "ID_order_foto_material" в таблице "foto_materials", на которую имеются ссылки.
Сообщение 1750, уровень 16, состояние 1, строка 5
Не удалось создать ограничение или индекс. См. описание предыдущих ошибок.
CREATE DATABASE foto_center;
GO
USE foto_center;
GO
CREATE TABLE orders(
ID_order INT PRIMARY KEY IDENTITY(1,1),
order_date DATE NOT NULL CHECK(order_date <= GETDATE()),
order_date_of_completion DATE NOT NULL CHECK(order_date_of_completion <= GETDATE()),
employee_ID INT NOT NULL,
customer_ID INT NOT NULL,
order_foto_material_ID INT NOT NULL,
order_printsize_ID INT NOT NULL,
order_equipment_ID INT NOT NULL,
FOREIGN KEY (employee_ID) REFERENCES employees(ID_employee),
FOREIGN KEY (customer_ID) REFERENCES customers(ID_customer),
FOREIGN KEY (order_foto_material_ID) REFERENCES foto_materials(ID_order_foto_material),
FOREIGN KEY (order_printsize_ID ) REFERENCES print_sizes(ID_order_printsize),
FOREIGN KEY (order_equipment_ID ) REFERENCES order_equipments(ID_order_equipment)
);
GO
CREATE TABLE employees(
ID_employee INT PRIMARY KEY IDENTITY(1,1),
surname VARCHAR(30) NOT NULL,
employee_name VARCHAR(30) NOT NULL,
middle_name VARCHAR(25)
);
GO
CREATE TABLE customers(
ID_customer INT PRIMARY KEY IDENTITY(1,1),
surname VARCHAR(30) NOT NULL,
customer_name VARCHAR(25) NOT NULL,
middle_name VARCHAR(25),
);
GO
CREATE TABLE foto_materials(
ID_order_foto_material INT PRIMARY KEY IDENTITY(1,1),
title VARCHAR(60) NOT NULL UNIQUE
);
GO
CREATE TABLE print_sizes(
ID_order_print_size INT PRIMARY KEY IDENTITY(1,1),
title VARCHAR(60) NOT NULL UNIQUE
);
GO
CREATE TABLE equipments(
ID_order_equipment INT PRIMARY KEY IDENTITY(1,1),
title VARCHAR(60) NOT NULL UNIQUE
);
Сначала должны быть созданы таблицы на которые ссылаемся.
А только после этого создаётся таблица, которая ссылается.
К моменту выполнения FOREIGN KEY таблица, указанная в REFERENCES, уже должна существовать.
CREATE DATABASE foto_center;
GO
USE foto_center;
GO
CREATE TABLE employees(
ID_employee INT PRIMARY KEY IDENTITY(1,1),
surname VARCHAR(30) NOT NULL,
employee_name VARCHAR(30) NOT NULL,
middle_name VARCHAR(25)
);
GO
CREATE TABLE customers(
ID_customer INT PRIMARY KEY IDENTITY(1,1),
surname VARCHAR(30) NOT NULL,
customer_name VARCHAR(25) NOT NULL,
middle_name VARCHAR(25)
);
GO
CREATE TABLE foto_materials(
ID_order_foto_material INT PRIMARY KEY IDENTITY(1,1),
title VARCHAR(60) NOT NULL UNIQUE
);
GO
CREATE TABLE print_sizes(
ID_order_print_size INT PRIMARY KEY IDENTITY(1,1),
title VARCHAR(60) NOT NULL UNIQUE
);
GO
CREATE TABLE equipments(
ID_order_equipment INT PRIMARY KEY IDENTITY(1,1),
title VARCHAR(60) NOT NULL UNIQUE
);
GO
CREATE TABLE orders(
ID_order INT PRIMARY KEY IDENTITY(1,1),
order_date DATE NOT NULL CHECK(order_date <= GETDATE()),
order_date_of_completion DATE NOT NULL CHECK(order_date_of_completion <= GETDATE()),
employee_ID INT NOT NULL,
customer_ID INT NOT NULL,
order_foto_material_ID INT NOT NULL,
order_printsize_ID INT NOT NULL,
order_equipment_ID INT NOT NULL,
FOREIGN KEY (employee_ID) REFERENCES employees(ID_employee),
FOREIGN KEY (customer_ID) REFERENCES customers(ID_customer),
FOREIGN KEY (order_foto_material_ID) REFERENCES foto_materials(ID_order_foto_material),
FOREIGN KEY (order_printsize_ID) REFERENCES print_sizes(ID_order_print_size),
FOREIGN KEY (order_equipment_ID) REFERENCES equipments(ID_order_equipment)
);
GO