Deutsch English
Alphabetical index
Array functions
CGI functions
Data types
Date functions
Debugging
Fulltext functions
Language elements
Numerical functions
Operators
Other functions
Ramtext functions
Selecting
Socket functions
Statistical functions
Stream functions
String functions
System functions
Table functions
  • access()
  • andmarks()
  • autofield()
  • autorecno()
  • blobsize()
  • blobtype()
  • cleardat()
  • closedb()
  • copyblob()
  • copymemo()
  • dbdir()
  • dbname()
  • dbno()
  • dbrights()
  • deldb()
  • delindex()
  • delmark()
  • delmarkedrecords()
  • delmarks()
  • delrec()
  • editoff()
  • editon()
  • embedblob()
  • exists()
  • fields()
  • filemode()
  • fileno()
  • filesize()
  • findandmark()
  • findauto()
  • findrec()
  • firstmark()
  • firstrec()
  • flushdb()
  • fsum()
  • genindex()
  • getcode()
  • getdef()
  • getfield()
  • getmarks()
  • getmode()
  • getpw()
  • getrec()
  • getrfield()
  • getstructure()
  • gettype()
  • incrfield()
  • inddef()
  • indname()
  • indno()
  • ismark()
  • label()
  • labelno()
  • lastrec()
  • link()
  • linkblob()
  • linkinfo()
  • lock()
  • makedb()
  • markdoubles()
  • markindex()
  • markpattern()
  • maxfile()
  • maxlabel()
  • memolen()
  • memostr()
  • newtable()
  • nextmark()
  • nextrec()
  • nmarks()
  • opendb()
  • prevrec()
  • primfile()
  • primtable()
  • putmarks()
  • putrec()
  • readmemo()
  • readrec()
  • recno()
  • recno()
  • recnr()
  • regenall()
  • regenind()
  • relation()
  • rendb()
  • reopendb()
  • revmarks()
  • setalias()
  • setauto()
  • setfield()
  • setfields()
  • setfilter()
  • setmark()
  • setmarks()
  • setrecord()
  • setrfield()
  • sortmark()
  • treeinfo()
  • unlock()
  • writerec()
    Text functions
    Home    Overview    Search    Impressum    Contact    Members
    Topic complex Table functions
    Function lock()
    Short Tabellensperre einrichten
    Syntax LOCK(db : INTEGER; Sperre : INTEGER; Modus : INTEGER) : INTEGER
    Parameter db : Tabellenhandle

    Sperre:
    0 : Schreibsperre
    1 : Totalsperre

    Modus:
    0 : Sperre wird unbedingt eingerichtet; Programm wartet
    1 : Sperre wird eingerichtet, wenn möglich; Programm wartet nicht
    Return 1 : Sperre ist eingerichtet
    0 : Sperre ist nicht eingerichtet
    See also:
    unlock()
    Description

    Die Funktion Lock dient dem Setzen der elementaren Schreib- beziehungsweise Totalsperre. Lock sollte immer dann benutzt werden, wenn Zugriffe auf Datenbankdateien über mehrere einzelne prgs erfolgen, die ihrerseits wiederum Sperren setzen und wieder aufheben (z.B. WriteRec). Durch Lock ist es nun möglich, zu Beginn der komplexen Datenbankzugriffe einmal die erforderliche Sperre einzurichten, die prgs abzuarbeiten und die Sperre mit Unlock wieder aufzuheben. Dies bringt im Netz nicht nur eine erhöhte Sicherheit, sondern auch eine gesteigerte Performance.

    Hinweis: Jede erfolgreich eingerichtete Sperre muss mit Unlock wieder aufgehoben werden.

    Das folgende Beispiel zeigt bereits den Sinn von Lock.  Unter Umständen muß ein gesicherter Datensatz wieder gelesen werden. Im ungünstigsten Fall wird zwischen dem Sichern der Satznummer in nSaveRec und dem Zurücksetzen des Satzzeigers mit ReadRec(KUNDE, nSaveRec) der Datensatz von einem anderen prg entfernt.
    Somit wäre ein sicheres Lesen des alten Datensatzes gefährdet. Daher sollten solche Vorgänge immer von Lock und Unlock umgeben sein.


    Example 1: Lock



    PROCEDURE FindName(cSuch: String): INTEGER;
    VAR nSaveRec, nret, KUNDE : INTEGER;
    	KUNDE:=OpenDB('kunde.dat');
    	Lock(KUNDE, 0);
    	nSaveRec := RecNo(KUNDE);
    	ReadRec(KUNDE, FINDREC(KUNDE, cSuch));
    	IF NOT GetField(KUNDE,'Nachname') LIKE cSuch
    		ReadRec(KUNDE, nSaveRec);
    	ELSE
    		nRet := 1;
    	END
    	UnLock(KUNDE, 0);
    	Return nRet
    ENDPROC;


    Example 2: Lock 2



    IF Lock(ARTIKEL,1,1)
    	x:=FindRec(ARTIKEL,"12345","ARTIKEL.ID",1)
    	ReadRec(ARTIKEL,x)
    	SetRField(ARTIKEL,"Preis",GetRField(ARTIKEL,"Preis")*1.05)
    	WriteRec(ARTIKEL,x)
    	UnLock(ARTIKEL,1)
    ELSE
    	CGIWriteLn("Hinweis: ARTIKEL kann momentan nicht gesperrt werden")
    END


    Example 3: Lock 3



    WHILE NOT Lock(ARTIKEL,1,1)
    	Pause(10)
    END
    
    ..Hier ist die Tabelle gesperrt
    
    x:=FindRec(ARTIKEL,"12345","ARTIKEL.ID",1)
    ReadRec(ARTIKEL,x)
    SetRField(ARTIKEL,"Preis",GetRField(ARTIKEL,"Preis")*1.05)
    WriteRec(ARTIKEL,x)
    Unlock(ARTIKEL)


    User comments:
    Write a comment:
    Name
    EMail
    Subject
    Text (Switch mode)

    Choose between
    the normal and the
    advanced editor.
    The advanced editor
    runs in IE 5+ and
    Mozilla 1.4+ only
    SPAM-Protection Please enter tdbengine in this field.

    tdbengine chat
    irc.tdbengine.org
    #tdbengine

       Copyright © 2003-2004 tdb Software Service GmbH
       Alle rechte vorbehalten. / All rights reserved
       Last changed: 21.10.2004
    {Fehler für :execmacro{execmacro="sessionspy"}