04.03.2015, Vladimír Klaus, navštíveno 5168x

MS Access
SQL

Předpokládejme, že budeme chtít zaznamenávat změny v tabulce objednávek. Začneme tím, že každé přidání nové objednávky do tabulky bude zapsáno do logovací tabulky, včetně přesného data, případně dalších informací.

Otevřete si v MS Accessu tabulku ObjednavkyFULL a na pásu karet si zobrazte Nástroje tabulky – Tabulka.

Přidání triggeru, obrázek 1

Nyní klikněte na tlačítko „Po vložení“ – objeví se před vámi jakýsi editor, pomocí kterého nastavíte vše, co je potřeba.

Přidání triggeru, obrázek 2

Z rozbalovacího seznamu zvolte „Vytvořit záznam“. Editor se změní a bude očekávat, že vyberete, kde se má vytvořit záznam (zadáte tabulku Log), jaká pole se mají nastavit a jak. Nepříjemné je, že v tu chvíli nemůžete s databází pracovat a podívat se třeba na názvy jiných polí v jiných tabulkách apod. Takto tedy přidáte tři položky:

  • IdObjednavky nastavíte na hodnotu ID tabulky ObjednavkyFULL
  • DatumACasAkce nastavíte na aktuální datum a čas
  • Akce nastavíte na text „přidání“

Přidání triggeru, obrázek 3

Nyní musíte editor zavřít, čímž se trigger (datové makro) uvede do chodu a bude čekat, až se do tabulky ObjednavkyFULL něco přidá.

Přidání triggeru, obrázek 4

Nyní si otevřete tabulku objednávek a něco do ní přidejte. A poté si otevřete tabulku Log, nebo pokud ji máte otevřenou, klikněte na ni a stiskněte F5. Situace může pak vypadat následovně.

Přidání triggeru, obrázek 5

Pokud databáze podporuje skutečné triggery, pak se setkáte třeba s tímto zápisem – vytvoření triggeru, který se spustí před tím, než něco vložíme do tabulky objednávek.

CREATE TRIGGER MujTrigger BEFORE INSERT ON Objednavky
  BEGIN
    tady by pak byl „program“, který by potřebnou akci zajistil
  END;