Module: Sequel::Plugins::InsertConflict
- Defined in:
- lib/sequel/plugins/insert_conflict.rb
Overview
The insert_conflict plugin allows handling conflicts due to unique constraints when saving new model instance, using the INSERT ON CONFLICT support in PostgreSQL 9.5+ and SQLite 3.24.0+. Example:
class Album < Sequel::Model
plugin :insert_conflict
end
Album.new(name: 'Foo', copies_sold: 1000).
insert_conflict(
target: :name,
update: {copies_sold: Sequel[:excluded][:b]}
).
save
This example will try to insert the album, but if there is an existing album with the name ‘Foo’, this will update the copies_sold attribute for that album. See the PostgreSQL and SQLite adapter documention for the options you can pass to the insert_conflict method.
You should not attempt to use this plugin to ignore conflicts when inserting, you should only use it to turn insert conflicts into updates. Any usage to ignore conflicts is not recommended or supported.
Usage:
# Make all model subclasses support insert_conflict
Sequel::Model.plugin :insert_conflict
# Make the Album class support insert_conflict
Album.plugin :insert_conflict
Defined Under Namespace
Modules: InstanceMethods