【发布时间】:2010-09-09 01:54:41
【问题描述】:
我有一个数据库 Class_Books,它将 ISBN(来自 Books 表)链接到 Class_ID(来自 Classes 表)。我正在更改我的 Books 表,因此主键是 Book_ID(自动增量 INT)而不是 ISBN。有没有办法更新 Class_Books 使其现在使用 Book_ID?
【问题讨论】:
标签: sql mysql many-to-many
我有一个数据库 Class_Books,它将 ISBN(来自 Books 表)链接到 Class_ID(来自 Classes 表)。我正在更改我的 Books 表,因此主键是 Book_ID(自动增量 INT)而不是 ISBN。有没有办法更新 Class_Books 使其现在使用 Book_ID?
【问题讨论】:
标签: sql mysql many-to-many
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 称为 many-to-many 表或 intersection 表。 relation这个词在关系理论中的意思是不一样的,和表之间的关系没有关系。
【讨论】: