जब भी किसी प्रविष्टि की सफलता की परवाह किए बिना किसी प्रविष्टि का प्रयास किया जाता है, तो एक क्रम बढ़ा दिया जाएगा। एक साधारण update
(जैसा कि आपके उदाहरण में है) इसे नहीं बढ़ाएगा बल्कि insert on conflict update
insert
. के बाद से होगा update
. से पहले कोशिश की जाती है ।
एक समाधान id
. को बदलना है करने के लिए bigint
. एक और अनुक्रम का उपयोग नहीं करना है और इसे स्वयं प्रबंधित करना है। और दूसरा है मैन्युअल अप्सर्ट करना:
with s as (
select id
from notifications
where title = 'something'
), i as (
insert into notifications (title, description)
select 'something', 'whatever'
where not exists (select 1 from s)
)
update notifications
set title = 'something else'
where id = (select id from s)
ऐसा लगता है title
अद्वितीय है।