2012-03-22 2 views
0

поэтому я бегуприращений обновление с помощью взамен тузд дубликат ключа ошибки

UPDATE x 
SET y = y + 1; 

где у является первичным ключом для таблицы ... но предположим, что есть две записи в таблице с у = 1,2 , 3 ... запрос будет жаловаться на повторную запись для ключа «PRIMARY», поскольку, когда он пытается обновить файл с y = 1 до y = 2, он будет конфликтовать с другой уже существующей записью с y = 2. . Есть ли способ заставить mysql игнорировать это и просто обновлять все так или иначе без ручного удаления ключа .... Я знаю, что я могу просто удалить ключ временно, а затем выполнить это, а затем снова добавить ключ, но мне интересно, возможно, чтобы сделать это без этого ...

+1

Хм, для чего вы хотите это сделать? :) –

+0

как насчет поиска проблемных ключей, а затем только их исправления? вы действительно хотите просто настроить все клавиши на клавишу + 1? – Randy

+0

@Randy yes .............. – pillarOfLight

ответ

2

Вы можете попробовать

UPDATE x SET y = y + 1 order by y DESC 
+1

или, возможно, обновление 2-х проходов - там, где вы добавляете какое-то число, большее, чем самый большой существующий ключ для каждого ключа. Затем на втором вы вычитаете обратно на 1 больше. – Randy