使用 StORM 更新数据记录

与 StORM 的.insert方法一样,可以使用 .update 方法对数据对象对应的数据记录进行更新。

具体说来,.update有两种形式:

update(
    cols: [String],
    params: [Any],
    idName: String,
    idValue: Any
    )

update(
    data: [(String, Any)],
    idName: String = "id",
    idValue: Any
    )

二者差别只是所用变量形式不同。

使用 Update 方法

请参考以下示例更新数据行:

let obj         = User(connect)
obj.firstname   = "Joe"
obj.lastname    = "Smith"

// 首先,创建一行新数据
try obj.save {
    id in obj.id = id as! Int
}

// 然后再改变数据内容
obj.firstname = "Mickey"
obj.lastname = "Mouse"
obj.email = "Mickey.Mouse@mailinator.com"

try obj.update(
    cols: ["firstname","lastname","email"],
    params: [obj.firstname, obj.lastname, obj.email],
    idName: "id",
    idValue: obj.id
    )

上述方法介绍了如何直接更新数据的过程,这种情况下调用try obj.save().update是同等效率的。

.update更有效的使用环境是,在从数据源取得数据记录之前,您就实现已经掌握了主索引记录的值。

这种情况下,UPDATE操作将不经任何包装处理,直接连接到数据库完成操作。

let obj         = User(connect)
try obj.update(
    cols: ["firstname","lastname","email"],
    params: ["Mickey", "Mouse", "Mickey.Mouse@mailinator.com"],
    idName: "id",
    idValue: 100001
    )