Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: FB: keine Datums-Zeitraum-Überlappung

  Alt 4. Dez 2009, 09:10
Eine Möglichkeit wäre, den Schreibzugriff nur einer Transaktion zu gestatten:
SQL-Code:
CREATE TABLE T_LOCK (
    LOCKEVENT VARCHAR(40) NOT NULL
);

ALTER TABLE T_LOCK ADD CONSTRAINT PK_LOCK PRIMARY KEY (LOCKEVENT);

SET TERM ^ ;

create procedure P_LOCK (
    LOCKEVENT varchar(40))
as
declare variable CNT integer;
begin
  /* Aktion für andere Transaktionen sperren */
  select count(lockevent) from t_lock where lockevent = :lockevent into cnt;

  if (cnt = 0) then
  begin
    insert into t_lock (lockevent) values (:lockevent);
  end
  else
  begin
    update t_lock set lockevent = :lockevent where lockevent = :lockevent;
  end
end^

CREATE TRIGGER R_TABELLE_BI FOR T_TABELLE
ACTIVE BEFORE INSERT POSITION 0
as
begin
  /* Zugriff auf Tabelle für andere Transaktionen sperren */
  execute procedure p_lock ('T_TABELLE');
end
^
SET TERM ; ^
Wenn erforderlich auch im "Before Update".
  Mit Zitat antworten Zitat