Замена значений внешнего ключа (уникальных) в двух записях - PullRequest
1 голос
/ 21 апреля 2009

Похоже, что MySQL пока не имеет ограничивающих ограничений до конца транзакции. Если да, то как лучше всего поменять родителей в двух записях о детях?

Например, если у нас есть несколько слотов пользовательского интерфейса, в которые каждый пользователь может помещать элементы. Как следует переключать элементы в пользовательских слотах, учитывая, что slotid имеет значение FK в таблице элементов и имеется уникальный индекс для столбцов itemId и slotId в таблице элементов

Есть ли лучший способ сделать это, чем использовать SET FOREIGN_KEY_CHECKS = 0 и три обновления в транзакции?

[РЕДАКТИРОВАТЬ] SlotId не имеет значения nullable и не должен предоставляться, поэтому элемент всегда должен находиться в каком-либо слоте - поэтому установка его как nullable будет означать отказ от семантической корректности и важной проверки безопасности только для упрощения некоторых деталей реализации.

Ответы [ 2 ]

1 голос
/ 21 апреля 2009

Обнулите их, если столбец, который нужно обновить, обнуляется, а затем обновите или удалите и вставьте.

0 голосов
/ 23 апреля 2009

Я описал похожую проблему в этом посте .

Кажется, что создание столбца NULL 'является меньшим злом, поскольку в этом случае вам не нужно отключать ограничение внешнего ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...