2016-10-17 1 views
2

У меня есть небольшая проблема с добавлением в таблицу CONSTRAINT.
Я хочу добавить UNIQUE CONSTRAINT и не проверять существующие данные в моей таблице.PostgreSQL - Добавить CONSTRAINT UNIQUE и не проверять существующие данные

У меня есть некоторые дубликаты в существующих данных, и я хочу оставить его таким, как он есть.

Я написал запрос:

ALTER TABLE tbl1 
    ADD CONSTRAINT unique_const UNIQUE (fld1, fld2) NOT VALID; 

Но это не работает, я получил сообщение об ошибке:

UNIQUE constraints cannot be marked NOT VALID

Я также попытался удалить все TIGGERS:

ALTER TABLE tbl1 DISABLE TRIGGER all; 
ALTER TABLE tbl1 ADD CONSTRAINT unique_const UNIQUE (fld1, fld2); 
ALTER TABLE tbl1 ENABLE TRIGGER all; 

Но тоже не работает.

Кто-нибудь знает, как добавить UNIQUE CONSTRAINT без проверки существующих строк?

ответ

0

Согласно documentation of PostgreSQL 9.6, к сожалению, опция NOT VALID в настоящее время разрешена только с использованием внешнего ключа и CHECK ограничений. This StackOverflow thread here могут быть связаны и предоставить идеи/основные подходы к альтернативному решению, хотя это от 2014 г.

+0

Это также относится к 9.5 и 9.6 –

+0

Большое спасибо. Отредактировал это. :) – mxscho

0

Если вы можете конкретно определить те линии, которые должны быть проигнорированы для ограничения, можно добавить частичный уникальный индекс:

Если у вас нет прямого условия, вам может потребоваться добавить столбец в таблицу, чтобы определить те строки, которые следует игнорировать (с соответствующим значением по умолчанию, чтобы подсчитывались новые строки).

Не уверен, что есть эквивалент синтаксиса ALTER TABLE.

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