> On Mar 15, 2019, at 12:59 PM, Adrian Klaver <adrian.kla...@aklaver.com> wrote:
> 
> 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 <mailingl...@unix-solution.de
>>>     <mailto:mailingl...@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.
> 
> 

Does a check constraint not suffice in this situation?

Reply via email to