#sql
#sql
Вопрос:
Привет всем, у меня возникла проблема с моей базой данных SQL, в частности с внешним ключом. Вот таблица, в которую я пытаюсь войти.
CREATE TABLE Employee (
EmployeeID int NOT NULL Primary Key,
LastName varchar(30) NOT NULL,
FirstName varchar(30) NOT NULL,
Address varchar(30) NOT NULL,
City varchar(20) NOT NULL,
State char(2) NOT NULL,
TelephoneAreacode char(5) NOT NULL,
TelephoneNumber char(8) NOT NULL,
JobTitle varchar(30) NOT NULL Foreign Key References Job_Title(JobTitle),
EEO1Classification varchar(30) NOT NULL,
HireDate char (10) NOT NULL,
Salary money NOT NULL,
Gender varchar(7) NOT NULL,
Age int NOT NULL
)
И данные
INSERT INTO Employee
VALUES ('95687', 'Edelman', 'Glenn', '175 Bishops Lane', 'LA Jolla', 'CA', '619', '5550199','Cashier', 'Sales Workers', '10/7/2003', '$21,500', 'Male', '64'),
('95688', 'McMullen', 'Eric', '763 Church ST', 'Lemm Grove', 'CA', '619', '5550135','Bagger', 'Sales Workers', '11/1/2002', '$12,500', 'Male', '20'),
('95995', 'Slentz', 'Raj', '123 Torrey DR', 'North Clairmont', 'CA', '619', '5550123','Assistant Manager', 'Officials amp; Managers', '6/1/2000', '$48,000', 'Male', '34'),
('55978', 'Broun', 'Erin', '2045 Parkway - Apt2B', 'Encinitas', 'CA', '760', '5550100', 'Bagger','Sales Workers', '3/12/2003', '$10,530', 'Female', '24'),
('55928', 'Carpenter', 'Donald', '927 Second St', 'Encinitas', 'CA', '760','5550154', 'Stocker','Office/Clerical', '11/1/2003', '$15,000', 'Male', '18'),
('59852', 'Esquivez', 'David', '10983 N. Coast Hwy Apt 902', 'Encinitas', 'CA', '760', '5550108','Butchers amp; Seafood Specialists', 'Operatives (Semi skilled)', '8/1/2003', '$19,000', 'Male', '22'),
('52362', 'Sharp', 'Nancy', '10793 Montecino RD', 'Ramona', 'CA', '858', '5550135', 'Cashier','Sales Workers', '7/12/2003', '$21,000', 'Female', '24');
Таблица с внешним ключом — это,
CREATE TABLE Job_Title (
JobTitle varchar(30) NOT NULL Primary key,
EEO1Classification varchar(30) NOT NULL,
JobDescription varchar(100) NOT NULL,
ExemptNonExempt varchar(30) NOT NULL,
)
И уже введенные там данные
INSERT INTO Job_Title
VALUES
('Accounting Clerk','Office/Clerical', 'Records Data', 'Non-Exempt'),
('Assistant Manager','Officials amp; Managers', 'Supervises and coordinates activities', 'Exempt'),
('Bagger','Sales Workers', 'Places customer orders in bags', 'Non-Exempt'),
('Cashier','Sales Workers', 'Operates cash register to itemize and total customer’s purchases', 'Non-Exempt'),
('Computer Support Specialist','Technician', 'Installs, modifies, and makes minor repairs to personal computers', 'Non-Exempt'),
('Dir. of Fin. amp; Acct.','Officials amp; Managers', 'Plans and directs the finance and accounting activities', 'Exempt'),
('Asst. - Bakery amp; Pastry','Craft Workers (Skilled)', 'Bakes Cakes and Pastries', 'Non-Exempt'),
('Butchers amp; Seafood Specialists','Operatives (Semi skilled)', 'Cuts Meat and seafood', 'Non-Exempt'),
('Stocker','Office/Clerical', 'Stocks Shelves', 'Non-Exempt');
Пожалуйста, помогите.
Комментарии:
1. Это помогает отформатировать код, чтобы он был читаемым, а также в чем ошибка и что именно вы делаете в данный момент
2. Сообщение об ошибке: сообщение 547, уровень 16, состояние 0, строка 1 Оператор INSERT конфликтует с ограничением ВНЕШНЕГО КЛЮЧА «FK__Employee__JobTit__09DE7BCC». Конфликт произошел в базе данных «KudlerFineFoodsEmployment», таблица «dbo.Job_Title», столбец «JobTitle».
3. Я получаю его, когда пытаюсь ввести данные в таблицу employee, которая имеет внешний ключ в столбце JobTitle, который ссылается на столбец JobTitle в таблице Job_title .
4. Только что запустил ваш sql без ошибок. Вы уверены, что в таблице Job_Title есть строки, которые вы ожидаете?
5. В вашем вопросе также нет записи о сотрудниках отдела продаж в списке должностей. Кроме того, на вашем месте я бы использовал идентификаторы, а не просто текстовые строки для установления связи. Так будет быстрее.
Ответ №1:
Убедитесь, что значения, которые вы вставляете в таблицу, содержащую внешний ключ (дочерняя таблица), имеют соответствующее значение в таблице, содержащей первичный ключ (родительская таблица), т.е. Вы не можете вставить что-либо в дочернюю таблицу, которая не имеет соответствующего значения в родительской таблице из-засвязь pk -Fk
Ответ №2:
Иногда ошибка возникает из-за того, что дочерняя таблица не имеет соответствующих значений, уже присутствующих в столбце родительской таблицы, на который ссылаются как на внешний ключ. Чтобы сделать:
-
Усечение обеих таблиц (обязательно сделайте резервную копию данных, если они громоздкие) может просто решить проблему.
-
Попробуйте ввести в дочернюю таблицу значения, которые уже существуют в столбце родительской таблицы. Надеюсь, это поможет.