Re: jsonb_array_length: ERROR: 22023: cannot get array length of a scalar
От | David G. Johnston |
---|---|
Тема | Re: jsonb_array_length: ERROR: 22023: cannot get array length of a scalar |
Дата | |
Msg-id | CAKFQuwb9Tym+QoRqr2nWLzbX_Q0uzxH3yds9rwF5gVBwkZHeAA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: jsonb_array_length: ERROR: 22023: cannot get array length of a scalar (Alexander Farber <alexander.farber@gmail.com>) |
Список | pgsql-general |
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 themOr 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
END
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.
В списке pgsql-general по дате отправления: