Personally, I think your conditions need to be stated a little more clearly (e.g. "has date within x months" means what, exactly? Months from now? Months ago? Months before or after some date specified in the entry to be made?)

If you can express these conditions in sql, with suitable placeholders for the actual values required for the criteria, then why not just store the sql statements themselves in a table (with placeholders)? That way, a perl script could simply query to get the relevant sql statement, then prepare it and execute it with the appropriate values to see whether a given insertion should be allowed.

(SQL statements are human-readable enough to be meaningful and clear in most cases.)

Nitpick: don't think that just having the same phrase structure on every condition is sufficient to make your conditions understandable -- double and triple negatives are just hard to follow, and you should avoid them. How about:

-- Entry can be made if (select count(*) from data_table where date>? and date<?) > 0;
and so on. Perhaps there are other conditions needed to identify your "other record x", "other record y", "other record "z", etc? Putting the conditions in SQL form will help to make sure you use the appropriate amount of detail.

In reply to Re: Human readable logic statements by graff
in thread Human readable logic statements by g0n

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.