更新SQL行的最佳方法

时间:2014-05-11 12:00:57

标签: sql objective-c

我有一个可以更新的SQL数据库。作为sql(将基于服务器)我只想更新我需要的值。因此,如果只有一列发生更改,则只会更新一列。

我有一种机制可以检测值是否已更改,并且当前我有一个混乱的函数来构造SQL语法,然后将数据绑定到它。我想知道的是,是否有任何值可以绑定到语法,因此SQL dosn不会更新该列。例如。

@"update TABLE1 Set col1 = ?, col2 = ? Where ROWID = '%d'",ROWID];

所以如果col2没有改变,是否有任何值可以绑定到它,所以它不会更新该列?。

感谢

3 个答案:

答案 0 :(得分:0)

基本上没有,没有"魔法"你可以绑定的值会使col2保持不变。

绑定旧值(即使用col2已经具有的相同值进行更新)将产生所需的效果,但要求您一次更新一行并知道每行的旧值。

在大多数情况下,重建SQL不包括col2很可能是正确的做法。

答案 1 :(得分:0)

获取某些变量中的所有列值...比如col1,col2。(针对该特定行)

  

如果更改了column1,您可以更新变量col1值。

     

同样,如果更改了column2,则可以更新变量col2值。

并且您在上面提到的单个UPDATE QUERY应该执行所需的更新。

答案 2 :(得分:0)

我不会'了解您是否要更改特定的行集,或者您可以选择ROW ID的随机集。

如果您可以选择随机的行ID集,则可以执行以下查询:

    update TABLE1 Set col1 = ?, col2 = ? Where ROWID NOT IN ( SELECT ................. )

其中SELECT子句exxt ROWID您不想更新。 希望它能帮到你。 再见, 西蒙