我想知道是否有人知道更好的方法来执行以下操作:
我需要查询数据库并返回一个值(在本例中为int),然后使用此值计算新值并使用此新值更新数据库。
我当前的方法是使用一种方法从数据库中获取当前的int值,将此值传递给另一个方法来执行计算,然后将新值传递给第三个方法来更新数据库。
所以,问题(?)就是它从数据库中获取初始值然后更新它时从池中打开一个新连接。显然它会在方法结束时关闭连接但是有一些更简单/更好的方法吗?看起来有点乱。
答案 0 :(得分:0)
您不必为每个查询打开新连接。只需在请求开始时打开一个连接,保存对可在所有方法中使用的全局变量的引用,并在请求结束时将其关闭。
答案 1 :(得分:0)
试试这个:
SELECT fieldValue FROM table_name FOR UPDATE;
UPDATE table_name SET fieldToUpdate = fieldValue + 1;
答案 2 :(得分:0)
如果你可以在SQL中进行计算:
UPDATE TableToUpdate
SET ColumnB =
Calculations( ( SELECT ColumnA
FROM TableToSelect
WHERE (conditions for selecting)
)
)
WHERE (conditions for updating)
答案 3 :(得分:0)
根据您的要求,您可以利用多表更新:
UPDATE TableToUpdate U JOIN TableToSelect S ON ( -- join condition for selection value to process )
SET U.ColumnB = Calculations( S.ColumnC )
WHERE U.ColumnC = -- whatever selection condition