Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да извършите заключване на ред?

При предположението, че това е MS SQL сървър, вероятно искате UPDLOCK , евентуално комбиниран с ROWLOCK (Съвети за таблица ). Имам проблеми с намирането на прилична статия, която описва теорията, но ето бърз пример:

SELECT id From mytable WITH (ROWLOCK, UPDLOCK) WHERE id = 1 

Това изявление ще постави заключване за актуализиране на реда за продължителността на транзакцията (затова е важно да сте наясно кога транзакцията ще приключи). Тъй като заключванията за актуализиране са несъвместими с изключителните заключвания (изисква се за актуализиране на записите), това ще попречи на всеки да актуализира този запис, докато транзакцията не приключи.

Обърнете внимание, че други процеси, опитващи се да модифицират този запис, ще бъдат блокирани, докато транзакцията завърши, но ще продължат с каквато операция за запис са поискали, след като транзакцията приключи (освен ако времето за изчакване не е изтекло или са изключени като блокиран процес). Ако искате да предотвратите това, тогава другите ви процеси трябва да използват допълнителни подсказки, за да прекъснат, ако бъде открито несъвместимо заключване, или да пропуснат записа, ако е променен.

Също така, Не трябва да използвате този метод за заключване на записи, докато чакате потребителско въвеждане . Ако това е вашето намерение, тогава трябва да добавите някакъв вид колона "се променя" към вашата таблица вместо това.

Механизмите за заключване на SQL сървъра наистина са подходящи само за използване за запазване на целостта на данните/предотвратяване на блокировки – транзакциите обикновено трябва да се поддържат възможно най-кратки и със сигурност не трябва да се поддържа, докато се чака въвеждане от потребителя.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не мога да добавя Microsoft.SqlServer.Management.Common към моето ASP.NET MVC приложение

  2. Как да добавите ограничение за външен ключ към съществуваща таблица в SQL Server (T-SQL)

  3. Проверете/променете нивото на съвместимост на база данни в SQL Server (SSMS)

  4. SQL заявка за сумиране на данните

  5. Изберете отделни редове, докато групирате по максимална стойност