AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tabelle sperren

Ein Thema von franktron · begonnen am 9. Jun 2004 · letzter Beitrag vom 3. Sep 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Smokey
Smokey

Registriert seit: 10. Nov 2003
Ort: Puerto de la Cruz
158 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Tabelle sperren

  Alt 9. Jun 2004, 15:35
Dein SQL-Befehl wird ja über die Connection ausgeführt.
Er sperrt dann alles, was hinter dem Start der Transaction angesprochen wird
Greif dir ein gutes Stück Fleisch auf deinem Weg nach draussen !!!
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#12

Re: Tabelle sperren

  Alt 9. Jun 2004, 15:44
Das geht nicht so gut da würde der zu viel sperren (leider währe so schön gewesen und mehrere Datnebanken geht nicht (zuviel Verbindugen))

Geibts noch eine methode
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Kasoft

Registriert seit: 5. Mai 2004
Ort: Filderstadt
111 Beiträge
 
Delphi 7 Professional
 
#13

Re: Tabelle sperren

  Alt 9. Jun 2004, 16:51
Ich versteh dein Problem nicht im geringsten. Wenn du Start Transaction machst werden die Datensätze
gesperrt die du dann benötigst. Er sperrt weder die komplette Datenbank noch die komplette Tabelle.
Und das ist doch was du wolltest.

MfG
Kasoft
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#14

Re: Tabelle sperren

  Alt 10. Jun 2004, 08:43
Ja schon aber da ich nur eine DB hab und nicht unbedingt für jedes modul eine eigene machen will,
Sperrt er dann alles was auf gemacht wird (wenn man z.b. Kunden öffnet soll er die ja nicht mit sperren)
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#15

Re: Tabelle sperren

  Alt 10. Jun 2004, 11:50
Hallo,

ich arbeite zwar mit Interbase aber es sollte doch in etwa genauso funktionieren. Die Datenbank sperrt doch nicht die komplette Table wenn darauf zugegriffen wird, das widerspricht doch dem Multigeneration - prinzip solcher DB's.

Es ist bei Interbase eine reine Einstellungssache wie sich die DB bei einem Zugriff verhält und das sollte bei MySQL genauso so sein. Der/die Datensatz(e) wird bei einem Zugriff gesperrt, nur der DS der bearbeitet wird, die anderen DS können normal bearbeitet und gelessen werden. Es sei de, du hast eine exklusive Sperren hinterlegt, dann werden alle Tables gesperrt, die von der Transaktion verwendet werden. Diese Einstellung sollte aber nicht der Standard sein.
  Mit Zitat antworten Zitat
Kasoft

Registriert seit: 5. Mai 2004
Ort: Filderstadt
111 Beiträge
 
Delphi 7 Professional
 
#16

Re: Tabelle sperren

  Alt 10. Jun 2004, 14:28
Hallo Franktron,
Albi hat schon alles gesagt. Ich denke du solltest das machen wie es
beschrieben ist! Vergess nicht das deine MySQL Datenbank das InnoDB
Format haben muss.

MfG
Kasoft
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Tabelle sperren

  Alt 10. Jun 2004, 14:50
Hi,

wenn du einen Datensatz sperren möchtest, brauchst du innoDB-Tabellen. Beim Sperren musst du zunächst eine Transsktion starten. Anschließend fragst Du die zu bearbeitenden Datensätze mit dem Kommando 'FOR UPDATE' ab:

Delphi-Quellcode:
try
  Database.StartTransaction
  mysqlQuery.SQL.Text('SELECT *
FROM MeineTabelle
WHERE Irgentwas
FOR UPDATE
');

//... weitere Aktionen...

Database.Commit;

except on E: DatabaseError do
begin
  Database.rollback
  showmessage('Ausführung nicht erfolgreich!')
end;
Solange du die Transaktion nicht beendest(Commit/rollback) ist/sind der/die Datensatz(Datensätze) gesperrt.
Fragen?:Frag!
Gruß,

Barnti
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#18

Re: Tabelle sperren

  Alt 10. Jun 2004, 18:27
Ich glaub jetzt hab ichs kappiert ich probier das mal aus Danke für die info.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
grips-net

Registriert seit: 3. Sep 2004
Ort: St. Wendel
50 Beiträge
 
#19

Re: Tabelle sperren

  Alt 3. Sep 2004, 09:06
Hallo!

Funktioniert das auch mit InterBase?

Kann ich einen Interbase-Datensatz sperren, indem ich in einer Transaction den Satz mit SELECT .... FOR UPDATE auslese?
Was passiert, wenn ein anderer Benutzer den gleichen Satz dann ebenfalls "FOR UPDATE" auslesen will?

Danke für die Antwort!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz