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

SQL Server ROWLOCK върху SELECT, ако не съществува транзакция INSERT

Обяснение...

  • ROWLOCK/PAGELOCK е детайлност
  • XLOCK е режим

Нивото и режимът на детайлност и изолация са ортогонални.

  • Грануларност =какво е заключено =ред, страница, таблица (PAGLOCK, ROWLOCK, TABLOCK )

  • Ниво на изолация =продължителност на заключване, паралелност (HOLDLOCK, READCOMMITTED, REPEATABLEREAD, SERIALIZABLE )

  • Режим =споделяне/ексклузивност (UPDLOCK, XLOCK )

  • "комбиниран", напр. NOLOCK, TABLOCKX

XLOCK щеше да заключи реда ексклузивно, както искате. ROWLOCK/PAGELOCK не биха го направили.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Редът на редовете по подразбиране в заявка SELECT - SQL Server 2008 срещу SQL 2012

  2. Динамично вмъкване в израз на таблица с променливи SQL Server

  3. Динамичен SQL за генериране на имена на колони?

  4. Значението на квадратните скоби [] в дизайнера на таблици на MS-SQL?

  5. Заменете единичните кавички в SQL Server