Restricción única diferible, insensible a mayúsculas y minúsculas

¿Es posible en PostgreSQL crear una restricción única diferible en una columna de caracteres, pero no distingue entre mayúsculas y minúsculas?

Asumamos la siguiente tabla básica:

CREATE TABLE sample_table ( 
   my_column VARCHAR(100)
);

Si no se necesita una restricción diferible, es tan simple como crear un índice único con función, por ejemplo:

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

La verificación de restricción diferida requiere crear la restricción explícitamente, por ejemplo:

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

Y, desafortunadamente, no es posible usar funciones arbitrarias en una restricción única.

Una posible solución sería crear una columna adicional con el mismo contenido quemy_column, pero en mayúsculas, actualizado a través de un disparador después de cada actualización / inserción, luego cree una restricción única diferible en esta columna artificial. Esto, sin embargo, suena como un hack muy feo.

Alternativamente, debería ser posible utilizarCREATE CONSTRAINT TRIGGER y verificar manualmente la singularidad que distingue entre mayúsculas y minúsculas (por supuesto, aún sería necesario un índice regular). Esto suena un poco demasiado complicado para un requisito tan simple (y popular, supongo).

¿Hay alguna forma más simple y / o elegante de evitar esta limitación?

Respuestas a la pregunta(1)

Su respuesta a la pregunta