Как работают ПК в оракуле - PullRequest
0 голосов
/ 03 июля 2018

У меня есть задача проверить и изменить поле PK в таблице оракула (я парень из Postgresql и Sql Server). Я проверил ограничения TOAD и обнаружил следующее:

PK_POI    Primary Key Disabled  Not Deferrable  Immediate  Not Validated  1    MI_PRINX
SYS_C0010910    Check Disabled  Not Deferrable  Immediate  Not Validated  1    "MI_PRINX" IS NOT NULL

Для чего я вижу два ограничения, где они созданы, но, насколько я понимаю, PK уже является полем NOT NULL, так зачем нужны два ограничения?

Также я заметил, что оба ограничения указаны как Disable, но в моем тесте я могу вставить нулевые значения, но не один и тот же идентификатор дважды

Так что не уверен, означает ли ограничение Disable то, что я думал, должно означать.

1 Ответ

0 голосов
/ 04 июля 2018

Отключить означает, что вы думаете, что означает.

Относительно NOT NULL и PRIMARY KEY это два ограничения. Под первичным ключом подразумевается NOT NULL, но если вы отбросите ограничение первичного ключа, проверочное ограничение все еще остается. Подробнее см. здесь .

Относительно "Я могу вставить нулевые значения ...": это потому, что оба ограничения отключены.

Относительно "... но не одного и того же идентификатора дважды": ограничение первичного ключа и уникальный индекс, который используется для его применения, - это две разные вещи. Можете ли вы проверить, есть ли уникальный индекс в этом столбце?

...