On 23-01-2021 20:49, Adrian Klaver wrote:
> On 1/23/21 10:20 AM, Condor wrote:
>> On 23-01-2021 18:31, Adrian Klaver wrote:
>>> On 1/23/21 4:57 AM, Condor wrote:
>>>>
>>>>
>
>>>
>>> So do an UPDATE and the RETURN NULL to cancel the INSERT. Untested
>>> example:
>>>
>>> UPDATE arhive_table SET sendto = 0, uts = date_part('epoch',
>>> CURRENT_TIMESTAMP)::integer WHERE contract = NEW.contract AND service
>>> = NEW.service;
>>>
>>> RETURN NULL;
>>>
>>
>>
>> Yep, I think about this update and was my first approach but need to
>> be done only if end_date is different.
>> If end_date is the same this mean contract still exists so only update
>> lastseen column, if the lastseen is not updated other process will
>> read not seen contracts and will generate report and send them to
>> delete services. If lastseen is changed and sendto is zero again, mean
>> end_date is changed and need to be send new end_date again to other
>> systems.
>
> So add an:
>
> ELSIF enddate = FROM NEW.end_date THEN
>
> and do UPDATE of lastseen column.
>
> Honestly I think this better handled by the external program that
> doing the transformation.
>
>>
>>
>>
Sorry,
I'm sorry, I don't understand something. You mean to do pure INSERT ON
CONFLICT DO or to modify the trigger ?