SQL SERVER
Tabeli loomine ja andmete lisamine
CREATE TABLE tootaja ( tootajaId INT PRIMARY KEY identity (1,1), tootaja_nimi VARCHAR(50), elukutse VARCHAR(50), kogemusi INT, tookoht VARCHAR(30) );

INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht) VALUES ('Artjom', 'programmeerija', 8, 'Office'); INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht) VALUES ('Maksim', 'Manager', 5, 'Restoraunt'); INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht) VALUES ('Yarik', 'Ehitaja', 12, 'Ehitusplats'); INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht) VALUES ('Luca', 'Õpetaja', 3, 'Kool'); INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht) VALUES ('Sasha', 'Arst', 10, 'Haigla');

CREATE TABLE logi( id int PRIMARY KEY identity (1,1), kuupaev DATETIME, kasutaja varchar(100), andmed TEXT, tegevus varchar(100))

Trigerid:
DELETE Triger
CREATE TRIGGER tootajaKustutamine ON tootaja AFTER DELETE AS BEGIN INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus) SELECT GETDATE(), SUSER_SNAME(), CONCAT('tootaja_nimi: ', deleted.tootaja_nimi, ', elukutse: ', deleted.elukutse, ', kogemusi: ', deleted.kogemusi, ', tookoht: ', deleted.tookoht), 'tootaja on kustutatud' FROM deleted; END;

Kontroll:

INSERT Triger
CREATE TRIGGER tootajaLisamine ON tootaja FOR INSERT AS BEGIN INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus) SELECT GETDATE(), SUSER_SNAME(), CONCAT('tootaja_nimi: ', inserted.tootaja_nimi, ', elukutse: ', inserted.elukutse, ', kogemusi: ', inserted.kogemusi, ', tookoht: ', inserted.tookoht), 'tootaja on lisatud' FROM inserted; END;

Kontroll:

Protseduurid:
Uue töötaja lisamine
CREATE PROCEDURE Lisatöötaja @tootaja_nimi VARCHAR(50), @elukutse VARCHAR(50), @kogemusi INT, @tookoht VARCHAR(30) AS BEGIN INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht) VALUES (@tootaja_nimi, @elukutse, @kogemusi, @tookoht); SELECT * FROM tootaja; SELECT * FROM logi; END;

Kontroll:

Töötaja eemaldamine
CREATE PROCEDURE Eemaldatöötaja @tootajaId INT AS BEGIN DELETE FROM tootaja WHERE tootajaId = @tootajaId; END;

Kontroll:

Töötajate andmete muutmine
CREATE PROCEDURE MuudaTöötajaAndmeid @tootajaId INT, @tootaja_nimi VARCHAR(50), @elukutse VARCHAR(50), @kogemusi INT, @tookoht VARCHAR(30) AS BEGIN UPDATE tootaja SET tootaja_nimi = @tootaja_nimi, elukutse = @elukutse, kogemusi = @kogemusi, tookoht = @tookoht WHERE tootajaId = @tootajaId; SELECT * FROM tootaja; SELECT * FROM logi; END;

Kontroll:

Lisamine uus tabel Juhataja ja 2 uus pästikud
loomine tabel ja andmete lisamine
CREATE TABLE Juhataja( JuhatajaId INT PRIMARY KEY IDENTITY (1,1), TootajaId INT, FOREIGN KEY (TootajaId) REFERENCES Tootaja(TootajaId), institutsioon VARCHAR(50), palk DECIMAL(10, 2)); INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (2, 'institut 1', 3000.00); INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (4, 'institut 2', 2500.00); INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (5, 'institut 3', 3500.00); INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (1, 'institut 4', 4500.00); INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (3, 'institut 5', 1500.00);

Lisamine triger
CREATE TRIGGER Juhataja_InsertTrigger ON Juhataja AFTER INSERT AS BEGIN INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus) SELECT GETDATE(), USER, CONCAT('institutsioon: ', I.institutsioon, ', palk: ', I.palk, ', tootaja_nimi: ', T.tootaja_nimi, ', elukutse: ', T.elukutse, ', kogemusi: ', T.kogemusi, ', tookoht: ', T.tookoht), 'Juhataja on lisatud' FROM inserted I INNER JOIN Tootaja T ON I.TootajaId = T.TootajaId;
Kontroll:
SELECT * FROM Juhataja INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (1, 'institut 6', 2000.00); SELECT * FROM Juhataja SELECT * FROM logi

Uuendamine triger
CREATE TRIGGER Juhataja_UpdateTrigger ON Juhataja AFTER UPDATE AS INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus) SELECT GETDATE(), USER, CONCAT('institutsioon: ', I.institutsioon, ', palk: ', I.palk, ', tootaja_nimi: ', T.tootaja_nimi, ', elukutse: ', T.elukutse, ', kogemusi: ', T.kogemusi, ', tookoht: ', T.tookoht), 'Juhataja on uuendatud' FROM inserted I INNER JOIN Tootaja T ON I.TootajaId = T.TootajaId INNER JOIN deleted D ON I.JuhatajaId = D.JuhatajaId;
Kontroll:
SELECT * FROM Juhataja UPDATE Juhataja SET institutsioon = 'institut 12', palk = 8000.00 WHERE JuhatajaId = 2; SELECT * FROM Juhataja SELECT * FROM logi

XAMPP
Tabeli loomine ja andmete lisamine



DELETE triger
INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus) SELECT NOW(), USER(), CONCAT('tootaja_nimi: ', OLD.tootaja_nimi, ', elukutse: ', OLD.elukutse, ', kogemusi: ', OLD.kogemusi, ', tookoht: ', OLD.tookoht), 'tootaja on kustutatud'


Kontroll:

INSERT triger
INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus) SELECT NOW(), USER(), CONCAT('tootaja_nimi: ', NEW.tootaja_nimi, ', elukutse: ', NEW.elukutse, ', kogemusi: ', NEW.kogemusi, ', tookoht: ', NEW.tookoht), 'tootaja on lisatud'


Kontroll:

Protseduurid
Uue töötaja lisamine
BEGIN INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht) VALUES (nimi, kutse, kogemus, koht); SELECT * FROM tootaja; SELECT * FROM logi; END


Kontroll:

Töötaja eemaldamine
BEGIN DELETE FROM tootaja WHERE tootajaId = id; SELECT * FROM tootaja; SELECT * FROM logi; END

Kontroll:

Töötajate andmete muutmine
BEGIN UPDATE tootaja SET tootaja_nimi = nimi, elukutse = kutse, kogemusi = kogemus, tookoht = koht WHERE tootajaId = id; SELECT * FROM tootaja; SELECT * FROM logi; END

Kontroll:

Lisamine uus tabel Juhataja ja 2 uus pästikud
loomine tabel ja andmete lisamine
CREATE TABLE Juhataja( JuhatajaId INT PRIMARY KEY AUTO_INCREMENT, TootajaId INT, FOREIGN KEY (TootajaId) REFERENCES Tootaja(TootajaId), institutsioon VARCHAR(50), palk DECIMAL(10, 2)); INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (2, 'institut 1', 3000.00); INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (4, 'institut 2', 2500.00); INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (5, 'institut 3', 3500.00); INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (1, 'institut 4', 4500.00); INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (3, 'institut 5', 1500.00);
Lisamine triger
INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus) SELECT NOW(), USER(), CONCAT('institutsioon: ', NEW.institutsioon, ', palk: ', NEW.palk, ', tootaja_nimi: ', T.tootaja_nimi, ', elukutse: ', T.elukutse, ', kogemusi: ', T.kogemusi, ', tookoht: ', T.tookoht), 'Juhataja on lisatud' FROM tootaja INNER JOIN Tootaja T ON NEW.TootajaId = T.TootajaId

Kontroll:
SELECT * FROM Juhataja; INSERT INTO Juhataja (TootajaId, institutsioon, palk) VALUES (1, 'institut 6', 2000.00); SELECT * FROM Juhataja; SELECT * FROM logi

Juhataja sai 9, sest ma tegin paar viga päästikus ja see kaitses mind nagu oleksin juba kedagi loonud.
Uuendamine triger
INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus) SELECT NOW(), USER(), CONCAT('institutsioon: ', NEW.institutsioon, ', palk: ', NEW.palk, ', tootaja_nimi: ', T.tootaja_nimi, ', elukutse: ', T.elukutse, ', kogemusi: ', T.kogemusi, ', tookoht: ', T.tookoht), 'Juhataja on uuendatud' FROM tootaja INNER JOIN Tootaja T ON NEW.TootajaId = T.TootajaId INNER JOIN Juhataja OLD ON NEW.JuhatajaId = OLD.JuhatajaId

Kontroll:
SELECT * FROM Juhataja; UPDATE Juhataja SET institutsioon = 'institut 12', palk = 8000.00 WHERE JuhatajaId = 2; SELECT * FROM Juhataja; SELECT * FROM logi


Id segi ajada paarist katsest, ma tegin seda kogemata.