Upsert data: upsert()
Performs an UPSERT into the table.
const { data, error } = await supabase
.from('messages')
.upsert({ id: 3, message: 'foo', username: 'supabot' })
Parameters
valuesrequired
Partial
|array
The values to insert.
__namedParametersrequired
object
No description provided.
returningrequired
minimal
|representation
By default the new record is returned. Set this to 'minimal' if you don't need this value.
onConflictrequired
undefined
|string
By specifying the
on_conflict
query parameter, you can make UPSERT work on a column(s) that has a UNIQUE constraint.ignoreDuplicatesrequired
boolean
Specifies if duplicate rows should be ignored and not inserted.
countrequired
null
|exact
|planned
|estimated
Count algorithm to use to count rows in a table.
Properties
Notes
- Primary keys should be included in the data payload in order for an update to work correctly.
- Primary keys must be natural, not surrogate. There are however, workarounds for surrogate primary keys.
Examples
Upsert your data
const { data, error } = await supabase
.from('messages')
.upsert({ id: 3, message: 'foo', username: 'supabot' })
Bulk Upsert your data
const { data, error } = await supabase
.from('messages')
.upsert([
{ id: 3, message: 'foo', username: 'supabot' },
{ id: 4, message: 'bar', username: 'supabot' }
])
Upserting into tables with constraints
Running the following will cause supabase to upsert data into the users
table.
If the username 'supabot' already exists, the onConflict
argument tells supabase to overwrite that row
based on the column passed into onConflict
.
const { data, error } = await supabase
.from('users')
.upsert({ username: 'supabot' }, { onConflict: 'username' })
Return the exact number of rows
const { data, error, count } = await supabase
.from('users')
.upsert({
id: 3, message: 'foo',
username: 'supabot'
}, {
count: 'exact'
})