创建一个新的多对多表

时间:2010-09-09 01:54:41

标签: sql mysql many-to-many

我有一个数据库Class_Books,它将ISBN(从Books表)链接到Class_ID(来自Classes表)。我正在更改我的Books表,因此主键是Book_ID(自动增量INT)而不是ISBN。有没有办法更新Class_Books,所以它现在使用Book_ID?

1 个答案:

答案 0 :(得分: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称为多对多表或交集表。 relation 这个词在关系理论中意味着不同,它与表之间的关系无关。