On Fri, Mar 2, 2018 at 11:58 AM, Alexander Farber <
alexander.far...@gmail.com> wrote:

> I see, thank you for your comments, David and Adrian.
> In the "tiles" column actually save either the JSON array of tiles - when
> the user plays them
> Or a string (which is jsonb too) concatenated of letters - when the user
> swaps the letters.
> Maybe I should rethink my table structure (I just want to "log" all plays,
> swaps, skips, resigns in the words_moves table)...
> Or maybe I should always check for the "action" column first (acts as
> enum) - before accessing "tiles" column....
​A table constraint like:

CASE WHEN action = 'Play'
           THEN lengh < 0
           WHEN action = 'Swap'
           THEN ...
           ELSE false

Is perfectly fine - though having actual non-null values take on different
meanings based upon the enum is generally not a good idea.  I've been using
the above to enforce conditional not null constraints when I don't want to
implement explicit inheritance​.

David J.

Reply via email to