Top.Mail.Ru
Ответы

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
);

По дате
По рейтингу
Аватар пользователя
Новичок
8мес

Сначала должны быть созданы таблицы на которые ссылаемся.
А только после этого создаётся таблица, которая ссылается.

К моменту выполнения FOREIGN KEY таблица, указанная в REFERENCES, уже должна существовать.

Аватар пользователя
Просветленный
8мес
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
 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