Re: INSERT Trigger to check for existing records

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: INSERT Trigger to check for existing records
Дата
Msg-id b997557b-838c-87fe-585f-1fc140109668@aklaver.com
обсуждение исходный текст
Ответ на Re: INSERT Trigger to check for existing records  (Adrian Klaver <adrian.klaver@aklaver.com>)
Ответы Re: INSERT Trigger to check for existing records  (Hagen Finley <hagen@datasundae.com>)
Список pgsql-general
On 11/21/20 8:47 AM, Adrian Klaver wrote:
> On 11/21/20 8:20 AM, Adrian Klaver wrote:
>> On 11/21/20 8:00 AM, Hagen Finley wrote:
>>> Hello,
> 
>>
>> Instead:
>>
>> IF NEW.ndealid = OLD.ndealid AND NEW.revusd = OLD.revusd
>>          AND NEW.stage = OLD.stage THEN
>>      RETURN NULL; --Will cancel INSERT
>> ELSE
>>      RETURN NEW;
>>
>> END IF;
> 
> Well this is what happens when I answer BC(before coffee). The above 
> will not work, if for no other reason then OLD does not exist in an 
> INSERT. Will try to come up with something that is in the realm of 
> possibility.

Alright caffeine in the blood stream, so something that might actually work:

DECLARE
     match_ct integer;
BEGIN

     SELECT INTO
    match_ct count(*)
     FROM
         sfdc
     WHERE
         ndealid = NEW.ndealid
     AND
         revusd = NEW.revusd
     AND
        stage = NEW.stage;

    IF match_ct > 0 THEN
        RETURN NULL; --Will cancel INSERT
    ELSE
        RETURN NEW;
    END IF;

END;

Though I would also point you at David's solution. Given that you are 
only looking at ~20% of the records being different it would save you a 
lot of churning through INSERTs.

> 
>>
>>>
>>> Hagen
>>>
>>> Larimer County, CO
>>>
>>
>>
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



В списке pgsql-general по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: INSERT Trigger to check for existing records
Следующее
От: Hagen Finley
Дата:
Сообщение: Re: INSERT Trigger to check for existing records