Если вам нужно отобразить эти значения пользователю, вероятно, проще всего создать другую таблицу и использовать ссылку на внешний ключ. Вы могли бы реализовать это как ограничение CHECK в dbms, которое применяет ограничения CHECK, но представление допустимых вариантов пользователю будет проблематичным.
-- You'll want to restrict permissions on this table pretty tightly. Very few
-- people should be allowed to change it.
create table xyz_codes (
code char(1) primary key CHECK (code in ('P', 'S', 'C'))
);
insert into xyz_codes values ('P'), ('S'), ('C');
create table xyz (
id integer primary key,
code char(1) references xyz_codes (code)
);
После этого следующий оператор INSERT завершится с ошибкой внешнего ключа.
insert into xyz values (1, 'D');
Но этот преуспеет.
insert into xyz values (1, 'C');
Чтобы выбрать действительные варианты для представления пользователю, используйте
select code
from xyz_codes
order by code;