2010-09-09 113 views
1

我有一個數據庫Class_Books,它將ISBN(從書籍表)鏈接到Class_ID(從類表)。我正在更改我的Books表,所以主鍵是Book_ID(autoincrement INT)而不是ISBN。有沒有辦法更新Class_Books,以便現在使用Book_ID?創建一個新的多對多表

回答

1

MySQL支持多表UPDATE語法,使這種類型的工作更容易。

ALTER TABLE Class_Books ADD COLUMNS Book_Id INT; -- nullable 

UPDATE Books b JOIN Class_Books cb ON b.ISBN = cb.ISBN 
SET cb.Book_Id = b.Book_Id; 

然後你可以使用ALTER TABLE來更改約束,使cb.Book_Id NOT NULL,落cb.ISBN。 PS:我推薦撥打Class_Books一個多對多表或十字路口表。 關係這個詞在關係理論中意味着不同,它與表之間的關係無關。

+0

這與*關聯*表相同嗎?或者我在想別的什麼? – mlschechter 2010-09-09 02:11:06

+0

@mlschechter:聽起來像是我的同義詞 – 2010-09-09 02:17:21

+0

當然,只是不要將它稱爲*關係表*,因爲那就像是說你正在使用*數字整數*。以某種方式排序,但聽起來很尷尬和多餘。 – 2010-09-09 02:23:12