Witam,
Chciałbym zablokować użytkownikowi edycję oraz usuwania konkretnych rekordów z bazy. Transakcje odpadają ze względu na długi czas blokady (kilka dni), a nie chciałbym dopuścić do niespodziewanych rollback'ów podczas np. zerwania połączenia czy coś. Zwykłe pola w bazie 0-1 też mi nie wystarczą. Postanowiłem więc stworzyć triggera:
CREATE TRIGGER zmiana
ON TABELA
INSTEAD OF update
AS
BEGIN
If (SELECT Id_pole FROM inserted) = 2
BEGIN
raiserror('Nie można edytować tego rekordu.', 12, 1)
RETURN
END
UPDATE TABELA
SET
pole2 = INSERTED.pole2
FROM INSERTED
WHERE INSERTED.Id_pole = TABELA.Id_pole
END
Problem polega teraz na tym, że chciałbym zdjąć blokadę z tego rekordu w pewnym momencie. Rekordów, które są w danym momencie zablokowane może być wiele. Załóżmy, że chciałbym zdjąć blokadę z jednego z nich. Jak to najlepiej rozwiązać mając takiego triggera? Może wywołanie jakiejś funkcji z parametrem, na podstawie której modyfikowany jest trigger (blokowane rekordy). Szukam jakiegoś optymalnego pomysłu jak to wykonać.