AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [Firebird] Alte Daten aus Tabelle löschen->deadlock
Thema durchsuchen
Ansicht
Themen-Optionen

[Firebird] Alte Daten aus Tabelle löschen->deadlock

Ein Thema von alzaimar · begonnen am 25. Jun 2009 · letzter Beitrag vom 26. Jun 2009
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

[Firebird] Alte Daten aus Tabelle löschen->deadlock

  Alt 25. Jun 2009, 10:59
Datenbank: Firebird • Version: 2.1 • Zugriff über: Egal
Hallo,

Habe folgende kleine Tabellen:
SQL-Code:
CREATE TABLE COUNTER (BUFFERSIZE INTEGER);

CREATE GENERATOR GEN_XMLBUFFER_ID;

CREATE TABLE XMLBUFFER (
    ID INTEGER NOT NULL,
    TIMEDATE TIMESTAMP,
    DATA BLOB SUB_TYPE 1 SEGMENT SIZE 80
);

ALTER TABLE XMLBUFFER ADD CONSTRAINT PK_XMLBUFFER PRIMARY KEY (ID);
CREATE INDEX XMLBUFFER_TIME ON XMLBUFFER (TIMEDATE);

SET TERM ^ ;

CREATE OR ALTER TRIGGER XMLBUFFER_BD0 FOR XMLBUFFER
ACTIVE BEFORE DELETE POSITION 0
AS
begin
   Update Counter set BufferSize = BufferSize - 1;
end
^
CREATE OR ALTER TRIGGER XMLBUFFER_BI FOR XMLBUFFER
ACTIVE BEFORE INSERT POSITION 0
as
begin
   Update Counter set BufferSize = BufferSize + 1;
  if (new.id is null) then
    new.id = gen_id(gen_xmlbuffer_id,1);
end
^
SET TERM ; ^
'COUNTER' enthält die Anzahl der Datensätze in der Tabelle 'XMLBUFFER'.

So, nun will ich die Tabelle 'XMLBUFFER' verkleinern. Dazu schnippel ich die ältesten 500 Records weg:
SQL-Code:
delete from xmlbuffer
  where id in (
    select first 500 id from xmlbuffer
    )
Leider klappt das nie, denn ich bekomme jedesmal den Fehler:
Zitat:
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
lock conflict on no wait transaction.
deadlock.
update conflicts with concurrent update.
concurrent transaction number is 1799580.
At trigger 'XMLBUFFER_BD0' line: 5, col: 4.
Kann man das vermeiden, ohne die Trigger zu löschen, oder muss man damit leben?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
 


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 03:14 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