我在JAVA中写了一个应用程序,将文章添加到Joomla网站
我的问题是插入文章需要运行五个查询(向content
表添加文章,将相应的节点插入assets
表,更新assets
表中的其他节点并设置资产ID插入的文章);因为我的JAVA应用程序在远程计算机上运行,许多问题都会导致这些查询失败。如果它们中的任何一个失败了整个assets
表格
我考虑使用事务和手动提交来解决这个问题,但Joomla的存储引擎(MyISAM)不支持事务。考虑将这两个表的存储引擎转换为“InnoDB”
它是否正确 ?它不会引发Joomla的问题(例如在与其他使用MyISAM的表的JOINING中)?
它会影响现场并使其变慢吗?
有没有其他解决方案(例如,将所有5个查询发送到服务器以按顺序运行)?
由于
答案 0 :(得分:1)
一些想法:
我不完全确定,但我不认为Joomla应该与InnoDB有任何问题。在JOIN中加入MyISAM和InnoDB表时,MySQL内部将InnoDB转换为MyISAM。但我不是Joomla的家伙,我仍然不能确定它
为什么不使用触发器 - content
上的AFTER INSERT触发器?
您也可以编写一个存储过程来运行所有5个INSERT,但同样不会有任何事务支持
创建一个表来保存所有5个INSERT查询中的所有数据。当然这张桌子只是间歇性的。现在创建另一个存储过程,然后将该中间表中的所有数据迁移到相应的表。
希望以上有意义!