? I en relationel database management system ( RDBMS ), såsom en SQL - baseret database , " Låse " bruges til at stoppe brugere i at ændre de samme data på samme tid. Hvis en bestemt sæt af data er låst , kan det ikke blive manipuleret af en anden bruger, indtil den første bruger tager fra låsen . Andre begrænsninger kan anvendes , såsom forebyggelse andre brugere fra at læse data , indtil det er låst op, og der er undtagelser fra denne generelle låsning regel. Der er seks typer låse i SQL. Delte Locks ( S )
En delt lås opbevarer data for en enkelt bruger at læse. Andre brugere kan ikke ændre data , der er afholdt under en delt lås, men de er i stand til at læse data. Når data er blevet læst, er låsen generelt tilbageleveret , med visse undtagelser , såsom hvis transaktionen køres ved hjælp af READCOMMITTED eller READCOMMITTEDLOCK låsning isolation niveau . Delte låse bruges i read -only operationer , og de kan ikke bruges til at ændre dataene .
Eksklusive Locks (X)
En eksklusiv lås bruges til at forhindre en sektion af data, der ændres ved en transaktion fra at blive ændret af en anden transaktion. Som standard kan data under en eksklusiv lås ikke læses af andre end den locker, men denne indstilling kan ændres ved at bruge NOLOCK vink eller et READUNCOMMITTED isolation niveau . Denne type lås ville blive brugt med operationer som INSERT , UPDATE og DELETE .
Opdatering Locks ( U)
En opdatering lås sidder i midten jorden mellem en delt lås og en eksklusiv lås. Hvis nogle data har en eksklusiv lås på det, kan ingen anden lås placeres på det. En opdatering låsen kan placeres på en lås, som allerede har en fælles lås på det, og når det bliver tid til at foretage opdateringer til dataene opdateringen lås skifter til en eksklusiv lås. Kun én opdatering låsen kan placeres på en ressource på ethvert givet tidspunkt .
Intent Locks (I)
Et forsæt lock tillader en transaktion til at anmelde en anden transaktion, sin hensigt at låse data - " . Intent lock" deraf navnet De arbejder forhindrer transaktioner i at låse en anden transaktioner i at låse en højere del af databasen . For eksempel forhindrer at placere en hensigtserklæring lås på bordet en anden transaktion, fra at placere en eksklusiv lås bordet, hvilket ville annullere en lås på en nedre del , såsom en række eller en side.
Schema Låse ( Sch ) og masseopdatering Locks (BU )
schema låse bruges med en operation , der kræver skemaet af bordet kører. Der er to slags - et skema stabilitet lås ( Sch -S) , som ikke blokere adgangen til objektet data og et skema modifikation lås, som ikke blokere adgangen til objektet data. En Bulk opdatering lås, som navnet antyder , bruges af bulk- operationer som hovedparten - kopiering af data , og når TABLOCK hint er blevet specificeret .