Oppnå Record låsing med MSSQL 7 eller later

auto og Failsafe Lås Records i MSSQL 7How ønsker du å være i stand til å avgjøre om en post har blitt låst inMSSQL Server og ikke få det irriterende 'Record har blitt endret av en annen User'when du endelig prøve ? å legge inn endringene Det er en enkel tilnærming (ganske lett), men det må være implementedprogramatically.This er how.For hver post du vil låse til dette: Lag en global midlertidig tabell som er oppkalt etter bordet der de recordis Sammen med den unike ID-av tabellen. For eksempel, hvis du har Atable navngitte kunder, med et unikt id-feltet kalt Uid og du vil låse therecord med uid = 14, opprette tabellen ved hjelp av denne spørringen: Lag tabell ## Customers14 (id int null) Når du ønsker å låse opp posten bare slippe det bordet: Drop table ## Customers14Now kan si at en annen bruker ønsker å bruke samme posten. Hans klient programmtries å skape den samme globale midlertidige tabellen, men klarte med et unntak, fordi det ikke to globale midlertidige tabeller kan ha samme navn. Trap unntaket i en prøve-bortsett klausulen og du er hjemme free.TIPS.a) Bruk dette bare for SQLServer 7 og over. SQL 6.5 og nedenfor har en forferdelig måte å håndtere temprorary tabeller som gir mye overhead.b) Du kan lage alle slags spalte i den midlertidige tabellen, slik at du kan ha informasjon som hva tid posten var låst og etter hva brukeren. c) Bruk aldri denne tilnærmingen hvis det er en sjanse noen vil glemme sin datamaskin åpent på en rekord for timer, og at datamaskinen er plassert kan si 100 miles fra serveren !!! d) Hvis tilkoblingen er tapt ved la oss si et program feil, er tabellen automatisk droped av SQL Server.e) Hvis datamaskinen shutsdown etter et strømbrudd, venter SQL Server i ca 15 minutter og deretter faller den midlertidige tabellen, eller hvis maskinen logger seg på igjen tabellen er droped automatisk .f) Hvis du ikke ønsker å måtte håndtere et unntak kan du også sjekke for eksistensen av den midlertidige tabellen i Master database. Anmeldelser



Previous:
Next Page: