1

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

我的想法是在它们之间有一个“链接”表,一旦两者都写入数据库或通过以下复杂的命令系列填充

Insert1
get identity1
Insert2 
get identity2
update 1

在连接到 mySQL 数据库并保持完整性的同时,您将如何在 PHP 中执行此操作?

您是否需要使用事务,如果需要,您将如何进行?

4

3 回答 3

3

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

于 2009-01-26T11:34:58.597 回答
1

If you really must do it , then definitely use transactions - to avoid orphan records

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");
于 2009-01-26T12:26:59.020 回答
0

您需要使用事务。如果您使用 InnoDb 存储引擎(但不适用于 MyIsam),MySql 在较新的版本中支持此功能。

于 2009-01-26T19:52:26.250 回答