AbstractTable.update() - 更复杂的条件?
AbstractTable.update() - more complex condition?
来自docs:
int SqlUtil::AbstractTable::update (
hash set,
hash cond,
reference< string > sql,
hash opt
)
updates rows in the table matching an optional condition and returns
the count of rows updated; no transaction management is performed with
this method
Example:
int ucnt = table.update(("id": id), ("name": name));
其中 ("name": name)
是条件哈希。条件可以更复杂吗?如果我有一个列表或散列 names
并且想用其中的名称更新所有行怎么办?是否可以使用一个更新语句来完成,或者我是否需要遍历 names
?
是的,where 条件可以是复杂的 update statements generated by SqlUtil。
where condition 由您问题的方法文档中的 cond
参数表示。
要根据值列表中的匹配更新行,请使用 op_in()
,如下所示:
int rows = table.update(("col1": val1, "col2": val2), ("col3": op_in(my_list)));
这将生成 SQL 如:
update table set col1 = %v, col2 = %v where col3 in (%v)
(注意:生成的确切 SQL 会因基础数据库而异,%v
字符是生成的 SQL 中 bind by value operations 的占位符规范,其中由于前面 link)
中所述的原因,实际值单独发送到 SQL 服务器
要根据另一列值的匹配更新值,请使用 op_like()
,如:
int rows = table.update(("col1": val1, "col2": val2), ("col3": op_like("%some value%")));
这将生成 SQL 如:
update table set col1 = %v, col2 = %v where col3 like %v
通常,您可以在更新方法的 where 子句中使用任何 SQL operator function。
来自docs:
int SqlUtil::AbstractTable::update ( hash set, hash cond, reference< string > sql, hash opt )
updates rows in the table matching an optional condition and returns the count of rows updated; no transaction management is performed with this method Example:
int ucnt = table.update(("id": id), ("name": name));
其中 ("name": name)
是条件哈希。条件可以更复杂吗?如果我有一个列表或散列 names
并且想用其中的名称更新所有行怎么办?是否可以使用一个更新语句来完成,或者我是否需要遍历 names
?
是的,where 条件可以是复杂的 update statements generated by SqlUtil。
where condition 由您问题的方法文档中的 cond
参数表示。
要根据值列表中的匹配更新行,请使用 op_in()
,如下所示:
int rows = table.update(("col1": val1, "col2": val2), ("col3": op_in(my_list)));
这将生成 SQL 如:
update table set col1 = %v, col2 = %v where col3 in (%v)
(注意:生成的确切 SQL 会因基础数据库而异,%v
字符是生成的 SQL 中 bind by value operations 的占位符规范,其中由于前面 link)
要根据另一列值的匹配更新值,请使用 op_like()
,如:
int rows = table.update(("col1": val1, "col2": val2), ("col3": op_like("%some value%")));
这将生成 SQL 如:
update table set col1 = %v, col2 = %v where col3 like %v
通常,您可以在更新方法的 where 子句中使用任何 SQL operator function。