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.