VALUES (5, 'Gizmo Transglobal'), (6, 'Associated Computing, Inc')
ON CONFLICT (did) DO UPDATE SET dname = EXCLUDED.dname;
нужно в UPDATE как-то ограничить условием where текущую строку или она подразумевается по умолчанию? То есть Update Set отработает ТОЛЬКО на конфликтующей записи?
Подразумевается. Да.
а как тогда обновить поле? Есть поле Cnt - количество. Нужно в on update к старому значению добавить новое из Insert?
Слушай, ну кому кроме тебя знать — как надо обновить поле?!?
не могу понять синтаксис команды. Есть справочник остатков, в нем поле CNT - остаток на такой-то день, такого-то товара на таком-то объекте. Я хочу изменить остаток, делаю insert on conflict. Если за сегодня уже была запись - увеличиваю в ней на количество, на которое надо изменить остаток. Если записи нет - пройдет штатный инсерт: INSERT INTO ams( acaid, adate, amodid, acnt, apriceto ) VALUES ( :acaid, :adate, :amodid, :acnt, (select * from getprice(adate,amodid)) ) ON CONFLICT (acaid, adate, amodid) DO UPDATE SET acnt = acnt + acnt --как тут указать, где старое значение из существующей записи, а где новое, из инсерта?
Одно ams. , другое EXCLUDED.
Обсуждают сегодня