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在较新版本中支持这一点。老实说,我这样问是因为我的同事问我,我认为探索集体思维会更快。所以我不知道背景是什么。老实说,我这么问是因为我的同事问我,我认为探索集体蜂群思维会更快。所以我不知道上下文是什么。