Я предполагаю, что ваше приложение имеет дело с чем-то, кроме настоящих имен.(Потому что «Джексон Майкл» является законным именем на английском языке. Так же, как «Джон Дэвид» и «Дэвид Джон».)
Самый простой способ - использовать ограничение CHECK () для обеспечения алфавитного порядка между двумястолбцы.
alter table test
add constraint test_alpha_order
check (a < b);
Но учтите, что у вас могут возникнуть проблемы с чувствительностью к регистру.То есть ваши БД могут полагать, что {'Джексон', 'Майкл'} и {'Джексон', 'Майкл'} являются двумя разными, действительными значениями.Если чувствительность к регистру является проблемой, наиболее распространенным решением, которое я видел, является применение строчных значений, например:
alter table test
add constraint test_alpha_order
check (a = lower(a) and
b = lower(b) and
a < b );