2010-01-16 2 views
3

Я пытаюсь изменить таблицу внутри моей базы данных postgresql, но она говорит, что существует дубликат! Каков наилучший способ найти дублирующее значение внутри таблицы? kinda select select?дублирующее значение в таблице postgresql

+0

О, это был не я дал его. Вы должны быть преднамеренно злобными, чтобы получить * меня *, чтобы дать нисходящее движение. –

ответ

1

Если вы попытаетесь изменить значение в столбце, который является частью PRIMARY KEY или имеет UNIQUE ограничение и получить эту ошибку там, то вы должны быть в состоянии найти конфликтующие строки по

SELECT * 
FROM your_table 
WHERE conflicting_column = conflicting_value; 

If conflicting_value - это тип символа, помещаемый в одинарные кавычки (').

EDIT: Чтобы узнать, на какие столбцы влияет ограничение, отметьте this post.

+1

Я не знаю противоречивое значение! я просто «ОШИБКА: дублирующее значение ключа нарушает уникальное ограничение« user_audit_log_pkey » – kevoroid

0

Прежде всего, определите, какие поля в таблице должны быть уникальными. Это может быть что-то, помеченное как первичный ключ, уникальный индекс, основанный на одном или нескольких полях или контрольном ограничении, снова на основе одного или нескольких полей.

После того, как вы это сделали, посмотрите, что вы пытаетесь вставить и выяснить, не нарушает ли он какие-либо уникальные правила.

И да, операторы SELECT помогут вам определить, что здесь не так. Используйте их, чтобы определить, можете ли вы зафиксировать строку.

13

Попробуйте Как это

SELECT count(column_name), column_name 
from table_name 
group by column_name having count(column_name) > 1; 
+0

, что он должен делать? i get 0 rows! – kevoroid

+0

Этот запрос является ожидаемым ответом, у меня такая же проблема, как и у OP, и этот запрос показывает мне записи, которые дублируются. Удаление их позволило мне создать индекс. – Lennon

Смежные вопросы