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".