api-docs / org.ktorm.support.sqlite / insertOrUpdate
insertOrUpdate
fun <T : BaseTable<*>> Database.insertOrUpdate(
table: T,
block: InsertOrUpdateStatementBuilder.(T) -> Unit
): Int
(source code)Insert a record to the table, determining if there is a key conflict while it’s being inserted, and automatically
performs an update if any conflict exists.
Usage:
database.insertOrUpdate(Employees) {
set(it.id, 1)
set(it.name, "vince")
set(it.job, "engineer")
set(it.salary, 1000)
set(it.hireDate, LocalDate.now())
set(it.departmentId, 1)
onConflict(it.id) {
set(it.salary, it.salary + 900)
}
}
Generated SQL:
insert into t_employee (id, name, job, salary, hire_date, department_id)
values (?, ?, ?, ?, ?, ?)
on conflict (id) do update set salary = t_employee.salary + ?
Parameters
table
- the table to be inserted.
block
- the DSL block used to construct the expression.
Return
the effected row count.