Restrição exclusiva diferida, sem distinção entre maiúsculas e minúsculas

É possível no PostgreSQL criar uma restrição exclusiva deferível em uma coluna de caracteres, mas não diferencia maiúsculas de minúsculas?

Vamos supor a seguinte tabela básica:

CREATE TABLE sample_table ( 
   my_column VARCHAR(100)
);

Se a restrição de adiamento não for necessária, é tão simples quanto criar um índice exclusivo com função, por exemplo:

CREATE UNIQUE INDEX my_unique_index ON sample_table(UPPER(my_column));

A verificação de restrição adiada requer a criação da restrição explicitamente, por exemplo:

ALTER TABLE sample_table 
 ADD CONSTRAINT my_unique_constraint UNIQUE(my_column)
 DEFERRABLE INITIALLY IMMEDIATE;

E infelizmente não é possível usar funções arbitrárias em restrições exclusivas.

Uma solução possível seria criar uma coluna adicional com o mesmo conteúdo quemy_column, mas maiúsculas, atualizadas por meio de um gatilho após cada atualização / inserção e, em seguida, criar uma restrição exclusiva diferida nessa coluna artificial. Isso, no entanto, soa como um hack realmente feio.

Alternativamente, deve ser possível usarCREATE CONSTRAINT TRIGGER e verificar manualmente a exclusividade de maiúsculas e minúsculas (claro que um índice regular ainda seria necessário). Isso soa um pouco complicado demais para um requisito tão simples (e popular, suponho).

Existe alguma maneira mais simples e / ou mais elegante em torno desta limitação?

questionAnswers(1)

yourAnswerToTheQuestion