mysql - 多对多关系 INSERT

标签 mysql sql database

我正在尝试在 2 个表之间创建多对多关系。我有 3 张 table 。它遵循 TOXY 模型。

table a: a.id (primary key)
table ab: ab.a_id (foreign key) ab.b_id (foreign key)
table b: b.id (primary key)

我应该如何插入数据才能将它们全部链接起来?

像这样? "INSERT INTO a ('name') VALUES ('my name')";

然后像这样? "INSERT INTO b ('name') VALUES ('my name')";

但是我必须有 a.id 和 b.id 才能把它放在表 ab 中。我应该如何取回它们?

我知道我可以做一个 SELECT a.id FROM a WHERE name = 'my name'。但是没有更简单的方法可以在您插入行时自动返回一个 id 吗?

最佳答案

您需要做的就是将这些 ID 存储在变量中,以便在查询中使用以插入到 ab 表中。 LAST_INSERT_ID() 返回插入行的 ID。因此,例如在 PHP 中:

// Run command to insert into A, then:
$a = mysql_query('SELECT LAST_INSERT_ID();');

// Run command to insert into B, then:
$b = mysql_query('SELECT LAST_INSERT_ID();');

// Then $a and $b hold the IDs that you can use to insert into AB.
mysql_query("INSERT INTO ab (a_id, b_id) VALUES ($a, $b);");

关于mysql - 多对多关系 INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1735571/

相关文章:

mysql - MIN() 不返回另一列的最小值

mysql - 在 MySQL 中以增量方式插入数百万行的最快方法

database - 无法创建 DB2 示例数据库

填字游戏数据库

mysql - 使用 MySQL 数据库触发器

php - 如何将转换后的数组插入mysql? (PHP)

PHP/SQL 在数据库中搜索

php - mysql 从数组匹配中选择多个值

mysql - MySQL 将在什么执行级别使用 ORDER BY 索引?

php - 更新然后更换模具