通过一个mysql查询插入不同的表


inserting in different tables through one mysql query

如何通过一个mysql查询插入3个不同的表,即我想写一个mysql查询将插入3个不同的表。我基本上有HTML的形式,其中有涉及不同的表,所以我将从一个表格中收集的数据插入到3个不同的表。如果有可能,怎么做?如果不是,为什么?

for one table

  $var1_table1 = $_POST['table1_column1'];
  $var2_table1 = $_POST['table1_column2'];
  $var3_table1 = $_POST['table1_column3'];

for second table

  $var1_table2 = $_POST['table2_column1'];
  $var2_table2 = $_POST['table2_column2'];
  $var3_table2 = $_POST['table2_column3'];

为第三个表

  $var1_table3 = $_POST['table3_column1'];
  $var2_table3 = $POST['table3_column2'];
  $var3_table3 = $_POST['table3_column3'];

这是变量

的格式

简短回答

不能使用一条SQL语句插入多个表

长回答

可以通过插入到table1中,然后设置一个触发器来实现在表1中插入数据到表2和表3中,使用BLACKHOLE表来临时存储数据。像这样。

就我个人而言,我会像避免瘟疫一样避免使用它,因为它模糊了&将数据从给定的应用程序插入到数据库中。关于这个实践的更深入的讨论可以在这里找到。

如果我是你,我会在你的php应用程序中编写三个单独的INSERT语句,并避免尝试创建插入多个表的单个查询。这会给你省去很多痛苦的!

没有一个标准查询允许在三个表中插入。然而:

  • 为什么需要一个查询?为什么不只是三个查询呢?
  • 也许使用事务可以解决您的问题?
  • 如果它们几乎代表相同的数据,您确定需要三个不同的表吗?为什么不使用一个表,如果需要的话可以使用三个视图呢?
  • 如果真的需要这个,可以使用存储过程,甚至是触发器来实现。

据我所知,PHP的mysql_query()函数不支持多个查询(插入,选择,更新等),当你插入到不同的表与不同的字段/列,你必须运行一个单独的查询每个。我认为没有办法做到你想做的。