Чтобы изучить базу данных, я создаю базу данных фильмов.
Чтобы связать несколько режиссеров с фильмом, у меня есть следующая схема:
movie(m_ID, ....)
m_director(dirID, dirName)//dirID is a autoincrement primary key
m_directs(dirID, m_ID) //dirID, m_ID are set as foreign Keys in the mysql
database(InnoDB engine)
У меня есть программа, которая подключается кБД, которая должна добавить фильм в базу данных.
Я могу легко добавить новую запись в таблицу фильмов и таблицу m_director, но у меня возникают проблемы при добавлении записи в таблицу m_directs.
INSERT INTO m_director (dirName) VALUES("Jason Reitman");
INSERT INTO m_directs (dirID, m_ID) VALUES(LAST_INSERT_ID(), "tt0467406");
Я использую этот оператор SQLвставить нового режиссера и добавить ассоциацию к фильму.Я знаю первичный ключ фильма, но я не знаю dirID
, поэтому я использую LAST_INSERT_ID()
, чтобы получить последний идентификатор только что вставленного режиссера.
Проблема, с которой я столкнулся, заключается в том, чтоЯ получаю следующую ошибку:
MySql.Data.MySqlClient.MySqlException (0x80004005): Cannot add or
update a child row: a foreign key constraint fails (`siteproducts`.
`m_directs`, CONSTRAINT `m_directs_ibfk_2` FOREIGN KEY (`dirID`)
REFERENCES `m_directs` (`dirID`) ON DELETE CASCADE ON UPDATE CASCADE)
Есть идеи?