Этот oneliner перечисляет все файлы в текущем каталоге, сортирует по временной отметке создания в обратном порядке (означает, что самый старый файл находится в начале) и автоматически переименовывает с завершающими нулями в соответствии с количеством файлов. Расширение файла будет сохранено.
У меня обычно есть только одна папка с годами для фотографий и фильмов для мобильных телефонов. Применяя эту команду, мои фотографии и видеоролики будут готовы для слайд-шоу в правильном порядке на телевизоре или в архиве.
Имейте в виду, что если вы столкнулись с именами имен файлов, вы теряете файлы. Поэтому сначала переименуйте что-то нечетное, как temp001.jpg
, а затем выполните свое окончательное имя файла.
DIGITS=$(ls | wc -l | xargs | wc -c | xargs); ls -tcr | cat -n | while read n f; do mv "$f" "$(printf "%0${DIGITS}d" $n).${f##*.}"; done
Можно на самом деле быть более обеспеченной установкой уровня изоляции транзакции вместо того, чтобы использовать подсказку запроса.
следующая ссылка из Книг Онлайн предоставляет подробную информацию каждого из различных Уровней изоляции.
http://msdn.microsoft.com/en-us/library/ms173763.aspx
Вот является хорошей статьей, которая объясняет различные типы поведения при блокировании в SQL Server и предоставляет примеры также.
http://www.sqlteam.com/article/introduction-to-locking-in-sql-server
WITH (HOLDLOCK)
позволяет другим читателям. UPDLOCK, как предложено в другом месте эксклюзивен.
HOLDLOCK предотвратит другие обновления, но они могут использовать данные, которые обновляются позже.
UPDLOCK предотвратит любого считывающего данные, пока Вы не будете фиксировать или откатывать.
Вы посмотрели sp_getapplock? Это позволило бы Вам сериализировать этот код (если это - единственный бит обновления) без UPDLOCK блокирование
Редактирование: проблема заключается главным образом в этом коде, работающем на 2 различных сессиях. С HOLDLOCk или REPEATABLE_READ, данные будут считаны на 2-й сессии перед 1-м обновлением сессии. С UPDLOCK никто не может считать данные ни на какой сессии.
MSSQL:
SELECT id
FROM Inventory (UPDLOCK)
WHERE material_id = 25 AND quantity > 10;
http://www.devx.com/tips/Tip/13134
<час>
SELECT id
FROM Inventory
WHERE material_id = 25 AND quantity > 10
FOR UPDATE;