Имеет ли значение порядок столбцов в определении внешнего ключа? - PullRequest
0 голосов
/ 20 февраля 2019

С учетом следующего определения первичного ключа (обратите внимание на порядок столбцов) на table1:

ALTER TABLE "table1" ADD PRIMARY KEY ("f1", "f4", "f2", "f3");

Далее с учетом следующего определения внешнего ключа (обратите внимание на порядок столбцов) на table2:

ALTER TABLE "table2"
  ADD CONSTRAINT "const1"
  FOREIGN KEY ("f1","f2","f3","f4")
  REFERENCES "table1" ("f1","f2","f3","f4");

Первый вопрос

Что касается, в частности, следующей строки:

FOREIGN KEY ("f1","f2","f3","f4")

Если порядок столбцов обычнобыть точно таким же, как порядок столбцов в определении первичного ключа, и если да, то почему?Будет ли для этого создан индекс table2?


Второй вопрос

Что касается, в частности, следующей строки:

REFERENCES "table1" ("f1","f2","f3","f4");

Должен ли порядок столбцов соответствовать порядку в определении первичного ключа на table1 или это не имеет значения и почему?

Спасибо

1 Ответ

0 голосов
/ 20 февраля 2019

Да, столбцы в вашем составном внешнем ключе должны быть в том же порядке, что и соответствующие столбцы в первичном ключе в родительской таблице.Если нет, то ограничение не будет работать так, как вы ожидаете.Нет, индекс на table2 не будет создан автоматически, но вы можете создать его, если это поможет с некоторыми вашими запросами.

...