sql >> Databasteknik >  >> RDS >> Sqlserver

Pessimistiskt lås i T-SQL

Om du väntar på en annan resurs som en slutanvändare, ta Dave Markles råd och gör det inte.

Annars kan du prova följande T-SQL-kod:

BEGIN TRAN

SELECT *
FROM   authors AU
WITH   (HOLDLOCK, ROWLOCK)
WHERE  AU.au_id = '274-80-9391'

/* Do all your stuff here while the row is locked */

COMMIT TRAN

HOLDLOCK hint ber artigt SQL Server att hålla låset tills du genomför transaktionen. ROWLOCK ledtråd ber artigt SQL Server att låsa endast den här raden istället för att utfärda ett sid- eller tabelllås.

Var medveten om att om många rader påverkas, kommer antingen SQL Server att ta initiativet och eskalera till sidlås, eller så kommer du att ha en hel armé av radlås som fyller serverns minne och kör ner bearbetningen.



  1. Konvertera från DUBBEL (15,2) till DECIMAL (15,2)

  2. Hur man duplicerar tabell i MySQL

  3. Hur får man listan över funktioner i databasen i PostgreSQL tillsammans med dess parametrar?

  4. Lagra funktionsnamn i databasen och kör det sedan