Re: ADD FOREIGN KEY fails, but the records exist

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: ADD FOREIGN KEY fails, but the records exist
Дата
Msg-id 37d7ad6b-3da6-0778-47fe-e6256babb4ad@aklaver.com
обсуждение исходный текст
Ответ на ADD FOREIGN KEY fails, but the records exist  (Ron <ronljohnsonjr@gmail.com>)
Ответы Re: ADD FOREIGN KEY fails, but the records exist  (Ron <ronljohnsonjr@gmail.com>)
Список pgsql-general
On 2/15/21 8:12 AM, Ron wrote:
> Postgresql 12.5
> 
> It's a self-referential FK on a single (but partitioned) table.  The 
> ALTER TABLE command fails, but I queried it, and the record that it 
> fails on exists.  I modified the original INITIALLY IMMEDIATE clause to 
> INITIALLY DEFERRED but that did not help.
> 
> What am I doing wrong?
> 
> (We're migrating from Oracle to PostgreSQL, and this is working in Oracle.)
> 
> sides=> ALTER TABLE employer_response
>      ADD CONSTRAINT amended_response_fk FOREIGN KEY 
> (amended_response_id, part_date)
>          REFERENCES employer_response(employer_response_id, part_date)
>      ON DELETE NO ACTION DEFERRABLE INITIALLY DEFERRED ;
> ERROR:  insert or update on table "employer_response_p2021_01" violates 
> foreign key constraint "amended_response_fk"
> DETAIL:  Key (amended_response_id, part_date)=(103309154, 2021-01-06 
> 00:00:00) is not present in table "employer_response".
> sides=>
> sides=> select employer_response_id, part_date
> sides-> from strans.employer_response
> sides-> where amended_response_id = 103309154;
> employer_response_id |      part_date
> ----------------------+---------------------
>              103309156 | 2021-01-06 00:00:00
> (1 row)

The error:

DETAIL:  Key (amended_response_id, part_date)=(103309154, 2021-01-06 
00:00:00) is not present in table "employer_response"

is pointing at 103309154 for amended_response_id = employer_response_id. 
You are showing an employer_response_id of 103309156

> 
> 
> sides=> select employer_response_id, part_date
> from strans.employer_response_p2021_01
> where amended_response_id = 103309154;
> employer_response_id |      part_date
> ----------------------+---------------------
>              103309156 | 2021-01-06 00:00:00
> (1 row)
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



В списке pgsql-general по дате отправления:

Предыдущее
От: Laurenz Albe
Дата:
Сообщение: Re: MultiXactMemberControlLock contention on a replica
Следующее
От: Marc Millas
Дата:
Сообщение: prepare in a do loop