在两个表中填充记录的最佳方法是什么,每个表都需要引用另一个表的主键?
我的想法是在它们之间有一个“链接”表,一旦两者都写入数据库或通过以下复杂的命令系列填充
Insert1
get identity1
Insert2
get identity2
update 1
在连接到 mySQL 数据库并保持完整性的同时,您将如何在 PHP 中执行此操作?
您是否需要使用事务,如果需要,您将如何进行?
在两个表中填充记录的最佳方法是什么,每个表都需要引用另一个表的主键?
我的想法是在它们之间有一个“链接”表,一旦两者都写入数据库或通过以下复杂的命令系列填充
Insert1
get identity1
Insert2
get identity2
update 1
在连接到 mySQL 数据库并保持完整性的同时,您将如何在 PHP 中执行此操作?
您是否需要使用事务,如果需要,您将如何进行?
我能问一下为什么这些表需要相互引用吗?如果是直接 1: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");
您需要使用事务。如果您使用 InnoDb 存储引擎(但不适用于 MyIsam),MySql 在较新的版本中支持此功能。