2012-03-24 103 views
0

我在JAVA中编写了一个应用程序,它将文章添加到Joomla网站。
我的问题是,插入一篇文章需要五个查询运行(添加文章到content表,插入相应的节点到assets表,更新其他节点assets表&设置插入文章的资产ID);并且因为我的JAVA应用程序在远程计算机上运行,​​所以如果其中任何一个查询都无法通过整个assets表中断,那么很多问题都可能导致这些查询中的任何一个失败&。
我想过使用事务和手动提交来解决这个问题,但Joomla的存储引擎(MyISAM)不支持事务。所以考虑将这两个表的存储引擎转换为“InnoDB”。
这是正确的吗?它不会为Joomla带来问题(例如在与使用MyISAM的其他表进行连接时)? 它会影响现场并使其变慢?
是否有其他解决方案(例如,将所有5个查询发送到服务器以按顺序运行)?将Joomla表引擎更改为InnoDB

感谢

回答

1

的几点思考:

  1. 我不能完全肯定,但我不认为应该的Joomla有任何问题与InnoDB的。当在JOIN中加入MyISAM和InnoDB表时,MySQL在内部将InnoDB转换为MyISAM。但我不是一个Joomla的家伙,我仍然不能确定它

  2. 为什么不使用触发器 - 一个AFTER INSERT触发器content

  3. 你也可以写一个存储过程运行所有的有5个插入但同样不会有任何事务支持

  4. 创建一个单一的表从所有5个INSERT查询保存所有数据。当然这张桌子只是间歇性的。现在创建另一个存储过程,然后将该中间表中的所有数据迁移到相应的表中。

希望以上是有道理的!

+0

嗨,谢谢;触发器不会引发joomla自己的查询问题吗?我的意思是,当我创建一个AFTER INSERT触发器时,它会在我的远程应用程序查询(应该)和joomla本身的查询(不应该!)上运行;可以将触发器配置为只在我的远程应用程序查询上运行吗? – RYN 2012-03-31 16:56:16

相关问题