Re: Conditional INSERT - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Conditional INSERT
Date
Msg-id 53dc55ae-506f-2aed-ea80-50f0978837ab@aklaver.com
Whole thread Raw
In response to Re: Conditional INSERT  (basti <mailinglist@unix-solution.de>)
Responses Re: Conditional INSERT  (Rob Sargent <robjsargent@gmail.com>)
Re: Conditional INSERT  (Ken Tanzer <ken.tanzer@gmail.com>)
List pgsql-general
On 3/15/19 11:54 AM, basti wrote:
> this is a dns database, and the client is update the _acme-challenge for
> LE certificates. I don't want that the client can insert "any" txt record.
> the client should only insert data if the hostname start with
> _acme-challenge. i have no control on client.
> 
> i have try this rule but the server reject this with a endless loop:

To borrow a quote:

"I had a problem so I decided to use a rule, now I have two problems."

Do not use a rule. As suggested upstream use a BEFORE INSERT trigger, 
you will be a lot happier.

> 
> CREATE RULE insert_acme AS ON INSERT TO t_dnsadmin_records_txt
>      WHERE NEW.hostname like '_acme-challenge%'
>      DO INSERT INTO t_dnsadmin_records_txt VALUES (
>                                      NEW.domainid,
>                                      NEW.hostname,
>                                      NEW.txtdata
>                                  );
> 
> 
> On 15.03.19 19:17, Michael Lewis wrote:
>>      On Fri, Mar 15, 2019 at 10:55 AM basti <mailinglist@unix-solution.de
>>      <mailto:mailinglist@unix-solution.de>> wrote:
>>
>>          Hello,
>>
>>          I want to insert data into table only if condition is true.
>>          For example:
>>
>>          INSERT into  mytable (domainid, hostname, txtdata)
>>            VALUES (100,'_acme.challenge.example', 'somedata');
>>
>>   
>> Alternative to a trigger implementation, if you are generating that
>> INSERT statement, you can change it to use a sub-select or CTE that
>> contains no values if the domainid isn't what you like. If you want it
>> to fail with error, you could add a check constraint. We might need more
>> context on what you are doing and why to give good advice.
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From: basti
Date:
Subject: Re: Conditional INSERT
Next
From: Rob Sargent
Date:
Subject: Re: Conditional INSERT