Цитата:
Сообщение от
gl00mie
последовательно нужно заменить на
а почему последовательно?
в рамках одной транзакции уникальность может быть нарушена.
главное, чтобы она не нарушалась за пределами транзакции.
X++:
// test for [url=http://axforum.info/forums/showthread.php?t=35529]Последовательная замена множества уникальных значений на другие без возникновения дубликатов[/url]
static void Job13(Args _args)
{
Table1 Table1;
ttsbegin;
// очистка
delete_from Table1;
// заполнение первоначальными значениями
Table1.clear(); Table1.Key = "0"; Table1.NewKey = "1"; Table1.insert();
Table1.clear(); Table1.Key = "1"; Table1.NewKey = "2"; Table1.insert();
Table1.clear(); Table1.Key = "3"; Table1.NewKey = "3"; Table1.insert();
Table1.clear(); Table1.Key = "7"; Table1.NewKey = "4"; Table1.insert();
Table1.clear(); Table1.Key = "9"; Table1.NewKey = "5"; Table1.insert();
Table1.clear(); Table1.Key = "15"; Table1.NewKey = "6"; Table1.insert();
Table1.clear(); Table1.Key = "20"; Table1.NewKey = "7"; Table1.insert();
ttscommit;
// здесь можно остановиться и обозреть таблицу
//break;
ttsbegin;
UPDATE_RECORDSET Table1 SETTING key = Table1.newKey;
ttscommit;
}