2010-09-09 62 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