【发布时间】:2018-03-14 17:54:44
【问题描述】:
有没有办法更新实体的列仅当列为空?这是我的 DAO 界面中的更新函数:
@Query("UPDATE media SET media_name = :mediaName, media_data = :mediaData WHERE id = :id")
fun update(id: Int, mediaName: String?, mediaData: String?)
...因为到目前为止,这些列的值“null”已更新。
【问题讨论】:
-
你的意思是
UPDATE media SET media_name = :mediaName, media_data = :mediaData WHERE id = :id AND media_name IS NULL AND media_data IS NULL? -
@CommonsWare 很抱歉不清楚,但非空参数几乎只更新到数据库,所以就像
@Query("UPDATE media SET media_name = :mediaName, media_data = :mediaData WHERE id = :id AND :mediaName IS NOT NULL AND :mediaData IS NOT NULL")一样,只是这不起作用 -
嗯,在调用
update()之前检查这些值上的null。 -
@CommonsWare 是的,这就是我的想法,但想知道是否有更理想的 SQL 替代方案。谢谢马克:-)
标签: android android-sqlite android-room android-database android-architecture-components