#sql #sql-server #ssms
Вопрос:
Я новичок в SQL и пытаюсь вставить значения в свою таблицу. В настоящее время я использую среду SQL Server Management Studio.
CREATE TABLE Materials
(
materials_ID int NOT NULL PRIMARY KEY,
floor_boards int NOT NULL,
power_Points int NOT NULL,
electrical_Wiring int NOT NULL,
stairs_Pack int NOT NULL,
);
SELECT * FROM materials;
-- Creation of the JobCards Table
CREATE TABLE jobCards
(
customer_id VARCHAR(50)
FOREIGN KEY REFERENCES Customers(customer_id),
jobCardID int NOT NULL PRIMARY KEY,
materials_ID int
FOREIGN KEY REFERENCES Materials(materials_ID),
jobType VARCHAR(150) NOT NULL,
rate decimal NOT NULL,
no_of_days int NOT NULL,
city VARCHAR(150) NOT NULL,
);
-- Selectin statement output values in Jobcards
SELECT * FROM jobCards;
-- Insert statement allows data to be inputed to table
INSERT INTO jobCards (customer_id, jobCardID, materials_ID, jobType, rate, no_of_days, city)
VALUES
('0001', 11000, 1, 'Full Conversion', 120000, 7, 'Pretoria'),
('0002', 10478, 2, 'Semi Conversion', 1080, 2, 'Pretoria'),
('0003', 14253, 3, 'Floor Boarding', 900, 2, 'Pretoria'),
('0004', 11258, 4, 'Full Conversion', 120000, 8, 'Pretoria'),
('0005', 12058, 5, 'Semi Conversion', 1080, 3, 'Pretoria'),
('0006', 13697, 6, 'Full Conversion', 120000, 7, 'Pretoria'),
('0007', 10211, 7, 'Full Conversion', 120000, 7, 'Pretoria'),
('0008', 10471, 8, 'Semi Conversion', 1080, 2, 'Pretoria'),
('0009', 13521, 9, 'Semi Conversion', 1080, 3, 'Pretoria'),
('0010', 10102, 10, 'Floor Boarding', 900, 2, 'Pretoria');
Я вставил таблицы, в которых есть проблема. Всякий раз, когда я запускаю свою программу, я получаю эту ошибку
Инструкция INSERT противоречила ограничению ВНЕШНЕГО КЛЮЧА «FK__jobCards__materi__2F10007B». Конфликт произошел в базе данных «DomingoRoofWorks», таблица «dbo.Материалы», столбец «materials_ID».
Комментарии:
1. Сначала заполните
Materials
главную таблицу. Именно так работает ВНЕШНИЙ КЛЮЧ.2. Вы используете ms sql server, а не mysql. Пожалуйста, обратите внимание на то, какой продукт вы используете, и отметьте свои вопросы соответствующим образом!
3. Убедитесь, что у вас есть эти идентификаторы в таблице Материалов. Он не может создать ограничение, если эти значения не существуют.
4. Большое вам спасибо за вашу помощь
![]()
Ответ №1:
Помните, что внешний ключ-это поле, которое помогает нам связать две таблицы вместе. Мы можем использовать внешний ключ для ссылки на первичный ключ в другой таблице.
Вы можете попробовать вставить некоторые строки в Materials
таблицу перед вставкой в jobCards
таблицу.
Вот пример:
-- After creating the tables:
INSERT INTO Materials (materials_ID, floor_boards, power_Points, electrical_Wiring, stairs_Pack)
VALUES (1, --someIntValue, --someIntValue, --someIntValue, --someIntValue)
После вставки всех необходимых строк вы можете использовать эти идентификаторы в качестве внешнего ключа в jobCards
таблице. На данный момент этот запрос может быть выполнен без проблем.
INSERT INTO jobCards (customer_id, jobCardID, materials_ID, jobType, rate, no_of_days, city)
VALUES
('0001', 11000, 1, 'Full Conversion', 120000, 7, 'Pretoria'),
('0002', 10478, 2, 'Semi Conversion', 1080, 2, 'Pretoria'),
('0003', 14253, 3, 'Floor Boarding', 900, 2, 'Pretoria'),
('0004', 11258, 4, 'Full Conversion', 120000, 8, 'Pretoria'),
('0005', 12058, 5, 'Semi Conversion', 1080, 3, 'Pretoria'),
('0006', 13697, 6, 'Full Conversion', 120000, 7, 'Pretoria'),
('0007', 10211, 7, 'Full Conversion', 120000, 7, 'Pretoria'),
('0008', 10471, 8, 'Semi Conversion', 1080, 2, 'Pretoria'),
('0009', 13521, 9, 'Semi Conversion', 1080, 3, 'Pretoria'),
('0010', 10102, 10, 'Floor Boarding', 900, 2, 'Pretoria');