I don't know how work with loops and arrays in PostgreSQL but i want make table with array which only accepts the given values.
('Icelandic','English','Polish','Danish','Norwegian','Swedish','French','German','Spanish')
How write this condition in shorter and prettier form?
CREATE TABLE Test(
UUID UUID NOT NULL PRIMARY KEY ,
Name varchar(40) NOT NULL UNIQUE , --
Languages text[] NOT NULL CHECK (
Languages[1] IN (
'Icelandic','English','Polish','Danish','Norwegian',
'Swedish','French','German','Spanish'
)
AND
Languages[2] IN (
'Icelandic','English','Polish','Danish','Norwegian',
'Swedish','French','German','Spanish'
)
AND
Languages[3] IN (
'Icelandic','English','Polish','Danish','Norwegian',
'Swedish','French','German','Spanish'
)
AND
Languages[4] IN (
'Icelandic','English','Polish','Danish','Norwegian',
'Swedish','French','German','Spanish'
)
AND
Languages[5] IN (
'Icelandic','English','Polish','Danish','Norwegian',
'Swedish','French','German','Spanish'
) AND
Languages[5] IN (
'Icelandic','English','Polish','Danish','Norwegian',
'Swedish','French','German','Spanish'
)
AND
Languages[6] IN (
'Icelandic','English','Polish','Danish','Norwegian',
'Swedish','French','German','Spanish'
)
AND
Languages[7] IN (
'Icelandic','English','Polish','Danish','Norwegian',
'Swedish','French','German','Spanish'
) AND
Languages[8] IN (
'Icelandic','English','Polish','Danish','Norwegian',
'Swedish','French','German','Spanish'
)
AND
Languages[9] IN (
'Icelandic','English','Polish','Danish','Norwegian',
'Swedish','French','German','Spanish'
) )
);