要學習數據庫,我正在創建一個電影數據庫。MySQL關係數據庫外鍵
要將多個董事與電影聯繫起來,我有以下模式:
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()
來獲取剛剛插入的導演的最後一個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)
任何想法?
嘗試選擇LAST_INSERT_ID(),並確保它是您所期望的值,同時嘗試使用已知的良好值手動插入並查看哪個不正確。 – 2011-03-06 08:02:39
我想你需要向我們展示'show create table m_director'和'show create table m_directs'的輸出結果。 – 2011-03-06 08:05:04