【问题标题】:Data insertion with junction tables使用联结表插入数据
【发布时间】:2012-01-17 00:30:55
【问题描述】:

我正在使用 CodeIgniter 中的联结表进行我的第一个主要数据库设计,但我不太确定如何处理数据插入。

假设我有两个表some_tableanother_table,还有一个连接表some_another。现在,如果我想向some_table 添加一条记录,我是否还要为联结表编写单独的插入查询,还是有更好、更自动化的方法来处理这个问题?

例如,我是否必须这样做:

INSERT INTO some_table (col1, col2, col3) VALUES (val1, val2, val3)

INSERT INTO some_another (col01, col02) VALUES (val01, val02)

对于每条记录,或者是否有一种方法或工具可以同时为我处理更新联结表?

如果我还需要提供任何其他信息,请告诉我。谢谢!

【问题讨论】:

  • 您必须编写单独的 INSERT。但我认为您可能喜欢阅读数据库触发器,这是一种很好的方法 - dev.mysql.com/doc/refman/5.0/en/triggers.html。触发器是在与触发器相关的表上运行时为 INSERT、UPDATE 或 DELETE 查询自动触发的代码

标签: php mysql codeigniter


【解决方案1】:

取决于“联结表”的用途。如果您只想连接其他两个表之间的所有记录,请为此使用连接。如果您想要“多对多”关联,实际上并没有一种自动方法可以知道应该关联哪些关联。

但是,如果您想模拟一个连接并简单地将所有关系“预加载”到一个多对多表中(如果您想要稍后可以禁用或操作的默认关系很有用),您可以使用触发器那个。

无论如何,您都需要对每个表使用单独的查询,因为 MySQL 无法通过单个查询插入多个表。

【讨论】:

    猜你喜欢
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 2016-12-23
    • 1970-01-01
    • 2016-04-27
    相关资源
    最近更新 更多