Это необходимо и полезно для нормализованных таблиц, чтобы обеспечить взаимодействие внешних ключей между ними.Несколько реже изменить значение поля PK, особенно если оно равно auto_increment
, но когда это произойдет, изменение будет касаться нормализованных отношений FK.
Аналогично, ON UPDATE DELETE
полезно длякаскадное удаление строк через все ваши отношения 1:1
FK, что делает ненужным многократное удаление из кода приложения.В любом случае это может быть подвержено ошибкам.
Примите во внимание следующее:
table customers:
custid INT NOT NULL PRIMARY KEY,
custname VARCHAR(64) NOT NULL
table orders:
orderid INT NOT NULL PRIMARY KEY,
custid INT NOT NULL,
FOREIGN KEY (custid) REFERENCES customers (custid) ON UPDATE CASCADE ON DELETE CASCADE
Предположим, вам нужно объединить записи из двух баз данных, но это приведет к коллизиям PK.Теперь вы можете безопасно обновить все PK custid
в customers
в одной из баз данных, и все связанные с ними заказы автоматически будут связаны с новыми идентификаторами.