вы можете программно построить оператор выбора, чтобы увидеть, указывают ли какие-либо кортежи на более чем одну строку. Если вы получите три столбца, foo, bar и baz, создайте следующий запрос
select count(*) from t
group by foo, bar, baz
having count(*) > 1
Если это возвращает какие-либо строки, ваш индекс не является уникальным, поскольку более одного ряда отображается на данный кортеж. Если sqlite3 поддерживает производные таблицы (у меня пока нет необходимости, поэтому я не знаю, как это сделать), вы можете сделать это еще более кратким:
select count(*) from (
select count(*) from t
group by foo, bar, baz
having count(*) > 1
)
Это вернет набор результатов из одной строки, обозначающий количество повторяющихся наборов кортежей. Если положительный, ваш индекс не уникален.