2013-12-01 6 views
1

У меня возникли проблемы со следующим вопросом: (. Напр)вставки в базу данных с внешнего ключа

у меня есть две таблицы

Table CARS: 
carID  |  Car Make 
1   |  Honda 
2   |  Misubishu 

где carID является первичным ключом

Table MODELS 
modelID  |  mName  |  carID 
1   |  accord  |  1 

где modelID - первичный ключ, а carID - внешний ключ (для CARS).

Теперь скажем, что я хочу вставить Honda Civic в таблицу MODELS.

Я хотел бы вставить гражданское и получить carID, что соответствует Honda из таблицы АВТОМОБИЛЕЙ

Я играл с операторами INSERT SELECT,, но я не могу заставить его работать; Я делал что-то вроде этого: https://dba.stackexchange.com/questions/46410/how-do-i-insert-a-row-which-contains-a-foreign-key

, который, кажется, именно то, что я хочу, но я все еще получаю sqlexceptions относительно f-ключа.

Спасибо!

+0

Каков ваш запрос и что было сообщением об ошибке? –

+0

com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: не удается добавить или обновить дочернюю строку: ограничение внешнего ключа завершилось ошибкой была моей ошибкой; Я попробовал кучу запросов, но мой последний: –

ответ

1

Если ModelID является auto_incremented вы могли бы сделать:

INSERT INTO models(mName,carID) 
SELECT 'Civic',carID 
FROM cars 
WHERE `Car Make` = 'Honda'; 

sqlfiddle demo

Если ModelID не auto_incremented, вы должны передать идентификатор также.

+0

Правильная идея. Пространство в области автомобиля должно быть ускользает. –

+0

@ DanBracuk. Исправлена. Благодарю. –

Смежные вопросы