我有一个数据库Class_Books,它将ISBN(从Books表)链接到Class_ID(来自Classes表)。我正在更改我的Books表,因此主键是Book_ID(自动增量INT)而不是ISBN。有没有办法更新Class_Books,所以它现在使用Book_ID?
答案 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 这个词在关系理论中意味着不同,它与表之间的关系无关。