我有一个laravel应用程序A,它有一个MySQL数据库DB1和一个表p1,还有一个不同的php应用程序B,它的MySQL数据库DB2中有一个等价表p2. 我希望找到最好、安全和完整的方法来至少从应用程序B更新DB1中的p1和DB2中的p2. 我有一些列只在p1中,一些列只在p2中,还有一些常见的列,但这些行有一对一的等价性,而不是一对多.它是来自现实世界的同一实体.
- 主要问题
我曾想过在应用程序B中使用一个事务来编辑表单,在该事务中,我用两个表各自的列和新值更新它们,但这会阻止来自两个数据库的记录吗?我有什么可担心的?
- 额外的风景
2.1.开始交易 2.2.我在DB1的p1中更新了一个FK列,它可以工作 2.3.当我完成事务时,有人在应用程序a中删除了fk对应表f1.id=p1.fk中的行 2.4.我在没有FK列的数据库DB2中进行更新; 2.5.我应该提交,或者它会给我一个错误(应该是这样),第一次更新无法执行?
- 澄清1
如果我还想在应用程序A中实现和编辑表单,同样的解决方案是否适用?我应该只在一个应用程序中更新吗?
- 澄清2
我应该使用哪些设置(如隔离级别)以及如何使用?代码示例将非常有用.
我愿意听取关于如何完成这项任务的建议.谢谢.
start transaction
UPDATE db1.p1 pp1 inner join db2.p2 pp2 on pp1.iddb2=pp2.id
SET
pp1.fk_id=23,
pp1.commoncol='a',
pp2.commoncol='a',
pp2.extracol='b'
WHERE pp2.id=123;
commit;