В моей таблице MS Access myTable
у меня есть столбец ID
, который имеет тип integer и является первичным ключом для таблицы.
Я нахожусь в ситуации, когда мне нужно увеличить значение каждого идентификатора на определенное смещение.Итак, я попытался запустить
Update myTable
Set ID = ID + [Offset]
Эта команда работает с очень большими смещениями, но заканчивалась ошибками, если смещение было небольшим.Кажется, причина в том, что Access выполняет эти обновления либо случайно, либо в порядке возрастания, что означает, что при попытке обновить значение в определенных строках ограничение первичного ключа будет нарушено.Причина в том, что в ходе обновления генерируются идентификаторы, которые уже существуют в таблице в это конкретное время, но теоретически больше не будут существовать, если запрос будет выполнен правильно.
В отличие от MS Access, SQL Server имеет встроенный механизм для решения этой проблемы, поэтому приведенное выше заявление будет работать.
Очевидно, что помимо простого удаления ключевого ограничения перед обновлением, решение будет заключаться в том, чтобы заставить Access обновить поле в порядке убывания, то есть начиная с самого высокого идентификатора и двигаясь вниз, таким образом избегая возможности дубликатов.,Однако следующая команда недопустима в MS Access.
Update myTable
Set ID = ID + [Offset]
Order By ID Desc
Примечание : эта команда будет работать в MySQL.
Есть ли способ добиться того, что я ищу, без снятия ограничения ключа?