Php 用需要相互引用的记录填充两个表的最佳方法是什么?

Php 用需要相互引用的记录填充两个表的最佳方法是什么?,php,mysql,reference,referential-integrity,Php,Mysql,Reference,Referential Integrity,在两个表中填充记录的最佳方法是什么?每个表都需要引用另一个表的主键 我的想法是,要么在它们之间建立一个链接表,一旦这两个链接表都被写入数据库,要么通过以下一系列复杂的命令来填充 Insert1 get identity1 Insert2 get identity2 update 1 在连接到mySQL数据库的同时,如何在PHP中实现这一点并保持完整性 您是否需要使用事务,如果需要,您将如何执行此操作?我可以问一下为什么表需要相互引用吗。如果是1:1,那么我建议将外键放在其中一个表中。查找也同

在两个表中填充记录的最佳方法是什么?每个表都需要引用另一个表的主键

我的想法是,要么在它们之间建立一个链接表,一旦这两个链接表都被写入数据库,要么通过以下一系列复杂的命令来填充

Insert1
get identity1
Insert2 
get identity2
update 1
在连接到mySQL数据库的同时,如何在PHP中实现这一点并保持完整性


您是否需要使用事务,如果需要,您将如何执行此操作?

我可以问一下为什么表需要相互引用吗。如果是1:1,那么我建议将外键放在其中一个表中。查找也同样简单。并且您的外键可以正确执行。否则,您将遇到一个鸡/蛋场景,其中两个表都需要相互引用。但首先需要创建一个。这意味着您的数据库在某一时刻将处于不一致状态。

我可以问一下为什么表需要相互引用吗。如果是1:1,那么我建议将外键放在其中一个表中。查找也同样简单。并且您的外键可以正确执行。否则,您将遇到一个鸡/蛋场景,其中两个表都需要相互引用。但首先需要创建一个。这意味着您的数据库在某一时刻将处于不一致状态。

如果您确实必须这样做,那么一定要使用事务-以避免孤立记录

mysql_query("START TRANSACTION");
if(!mysql_query($query1))
{   $errmsg=mysql_error();
    mysql_query("ROLLBACK");
}
else
{  $id1=mysql_insert_id();
   $query2="insert into.....$id1...");
   if(!mysql_query($query2))
   {   $errmsg=mysql_error();
       mysql_query("ROLLBACK");
   }
   $id2=mysql_insert_id();
   if(!mysql_query("update tabel1 set my_key=$id2 where key=$id1"))
   {   $errmsg=mysql_error();
       mysql_query("ROLLBACK");
   }

}
mysql_query("COMMIT");

如果您确实必须这样做,那么一定要使用事务,以避免孤立记录

mysql_query("START TRANSACTION");
if(!mysql_query($query1))
{   $errmsg=mysql_error();
    mysql_query("ROLLBACK");
}
else
{  $id1=mysql_insert_id();
   $query2="insert into.....$id1...");
   if(!mysql_query($query2))
   {   $errmsg=mysql_error();
       mysql_query("ROLLBACK");
   }
   $id2=mysql_insert_id();
   if(!mysql_query("update tabel1 set my_key=$id2 where key=$id1"))
   {   $errmsg=mysql_error();
       mysql_query("ROLLBACK");
   }

}
mysql_query("COMMIT");

您需要使用事务。如果您使用InnoDb存储引擎而不是MyIsam,MySql在较新版本中支持此功能。

您需要使用事务。如果您使用InnoDb存储引擎,而不是MyIsam,MySql在较新版本中支持这一点。

老实说,我这样问是因为我的同事问我,我认为探索集体思维会更快。所以我不知道背景是什么。老实说,我这么问是因为我的同事问我,我认为探索集体蜂群思维会更快。所以我不知道上下文是什么。