Tabelid

  • Loo tabel puu (puuID, puuNimi, kirjeldus, pikkus).
  • Loo tabel logi triggerite töö jälgimiseks: (logiID, kuupäev, toiming, andmed, kasutaja).
  • Loo tabel puuLeht ja lisa välisvõtme seos tabeliga puu:

Triggerid

  • Loo tabeli puu jaoks triggerid, mis jälgivad sisestamist, muutmist ja kustutamist.
  • Loo triggerid, mis jälgivad kahe seotud tabeli (puu ja puuLeht) andmete muutumist.

Puu tabeli triggerid


Puu Lisamine trigger

CREATE TRIGGER PuuLisamiseLogi
ON puu
FOR INSERT
AS
BEGIN
    INSERT INTO logi (kasutaja, tegevus, kirjeldus)
    SELECT
        SYSTEM_USER,
        'Puu on lisatud',
        CONCAT('Puu nimi: ', nimi, ', puu kirjeldus: ', kirjeldus, ', puu pikkus: ')
    FROM inserted;
END;
-- Lühikood
INSERT INTO puu (puukimi, kirjeldus, pikkus) VALUES
('Tamm', 'Suur ja tugev tammepuu', 25.4),
('Kask', 'Kõrge ja hele kask', 18.7),
('Mänd', 'Igihaljas männipuu', 20.1);
kontrollida:

Puu kustutamine trigger

CREATE TRIGGER PuuKustutamiseLogi
ON puu
FOR DELETE
AS
BEGIN
    INSERT INTO logi (kasutaja, tegevus, kirjeldus)
    SELECT
        SYSTEM_USER,
        'Puu on kustutatud',
        CONCAT('PuuID=', deleted.puuID, ', puuNimi=', deleted.puuNimi)
    FROM deleted;
END;

Provida:

delete from puu where puuID=1

Puu tabeli värskendada trigger

CREATE TRIGGER PuuUpdate
ON puu
FOR UPDATE
AS
BEGIN
    INSERT INTO logi (kasutaja, tegevus, kirjeldus)
    SELECT
    SYSTEM_USER,
    'puu on muudetud',
    CONCAT('puuID=', inserted.puuID, ', uus puuNimi=', inserted.puuNimi, ', uus kirjeldus=', inserted.kirjeldus, ', uus pikkus=', )
    FROM inserted;
END;

Provida:

UPDATE puu
SET kirjeldus = 'Väga vana tammepuu, mis on üle 100 aasta vana', pikkus = 30.0
WHERE puuID = 4;

PuuLehtLisamine:

-- Lühikood

CREATE TRIGGER puulehtLisamiseLogi
ON puuleht
AFTER INSERT
AS
BEGIN
    INSERT INTO logi (kasutaja, tegevus, kirjeldus)
    SELECT
    SYSTEM_USER,
    'puuleht on lisatud',
    CONCAT('puulehtID=', i.puulehtID, ', lehtidis=', i.lehtidis, ', viide puule puuID=', i.puuID)
    FROM inserted i;
END;
GO

Provida:


PuuLehtMuudatus

CREATE TRIGGER puuLehtMuudatus
ON puuLeht
AFTER UPDATE
AS
BEGIN
    INSERT INTO logi (kasutaja, tegevus, kirjeldus)
    SELECT 
        SYSTEM_USER,
        'puuLeht on muudetud',
        CONCAT(
            'puuLehtID=', i.puuLehtID,
            ', lehtNimi vana=', d.lehtNimi, ' uus=', i.lehtNimi,
            ', puuID vana=', d.puuID, ' uus=', i.puuID
        )
    FROM inserted i
    INNER JOIN deleted d ON i.puuLehtID = d.puuLehtID;
END;
GO

Provida:


PuuLehtKustutamine

CREATE TRIGGER puuLehtKustutamine
ON puuLeht
AFTER DELETE
AS
BEGIN
    INSERT INTO logi (kasutaja, tegevus, kirjeldus)
    SELECT 
        SYSTEM_USER,
        'puuLeht on kustutatud',
        CONCAT(
            'puuLehtID=', d.puuLehtID,
            ', lehtNimi=', d.lehtNimi,
            ', viide puule puuID=', d.puuID
        )
    FROM deleted d;
END;
GO

Provida: