[XAMPP] Ühe tabeli triggeri loomine harjutus







[XAMPP] Harjutus kahe tabelite seosete (on loodud tabel 'omanik')







[SQL Server] Ühe tabeli triggeri loomine harjutus
CREATE DATABASE maanteamet;
USE maanteamet;
CREATE TABLE autoregister (
autoID INT identity(1,1) PRIMARY KEY,
autoNimi VARCHAR(50),
aasta int,
autoNR VARCHAR(6),
omanikID int,
CONSTRAINT FK_omanik FOREIGN KEY (omanikID) REFERENCES omanik(omanikID)
)
CREATE TABLE logitabel (
id INT identity(1,1) PRIMARY KEY,
aeg datetime,
toiming varchar(100),
autoAndmed text,
kasutaja varchar(25)
)
Triggerite loomine
CREATE TRIGGER autoLisamine
ON autoregister
AFTER INSERT
AS
INSERT INTO logitabel(aeg, toiming, autoAndmed, kasutaja)
SELECT
GETDATE(),
'on tehtud INSERT käsk',
CONCAT('auto nimi: ', autoregister.autoNimi,
', aasta: ', autoregister.aasta,
', auto number: ', autoregister.autoNR
),
SUSER_NAME()
FROM autoregister
CREATE TRIGGER autoKustutamine
ON autoregister
AFTER DELETE
AS
INSERT INTO logitabel(aeg, toiming, autoAndmed, kasutaja)
SELECT
GETDATE(),
'on tehtud DELETE käsk',
CONCAT('auto on kustutatud: ', deleted.autoNR
),
SUSER_NAME()
FROM deleted
CREATE TRIGGER autoUuendamine
ON autoregister
AFTER UPDATE
AS
INSERT INTO logitabel(aeg, toiming, autoAndmed, kasutaja)
SELECT
GETDATE(),
'on tehtud UPDATE käsk',
CONCAT('vanad andmed - ', 'auto: ', deleted.autoNimi, ', aasta: ', deleted.aasta, ', auto number: ', deleted.autoNR,
' | uued andmed - ', 'auto: ', autoregister.autoNimi, ', aasta: ', autoregister.aasta, ', auto number: ', autoregister.autoNR),
SUSER_NAME()
FROM deleted
INNER JOIN autoregister on deleted.autoID = autoregister.autoID
Sisestan andmed
insert into autoregister(autoNimi, aasta, autoNR) VALUES
('Mitsubishi', 2008, '286MGE'),
('Toyota', 1996, '361MGW')

Eemaldan andmed
delete from autoregister where autoID=3

Uuendan andmed
UPDATE autoregister
SET autoNR = '376JSH'
WHERE autoID = 4;

Tehtud tegevused logi tabelis

[SQL Server] Harjutus kahe tabelite seosete (on loodud tabel 'omanik')
CREATE TABLE omanik (
omanikID int identity(1,1) PRIMARY KEY,
nimi varchar(50)
)
Sisestan andmed
insert into omanik(nimi) VALUES
('Eugene R'), ('Mark T')
Triggerite loomine
CREATE TRIGGER autoLisamine2tabelid
ON autoregister
AFTER INSERT
AS
INSERT INTO logitabel(aeg, toiming, autoAndmed, kasutaja)
SELECT
GETDATE(),
'on tehtud INSERT käsk',
CONCAT('auto nimi: ', autoregister.autoNimi,
', aasta: ', autoregister.aasta,
', auto number: ', autoregister.autoNR,
', omanik nimi: ', nimi),
SUSER_NAME()
FROM autoregister
inner join omanik o ON autoregister.omanikID=o.omanikID
CREATE TRIGGER autoUuendamine2tabelid
ON autoregister
AFTER UPDATE
AS
INSERT INTO logitabel(aeg, toiming, autoAndmed, kasutaja)
SELECT
GETDATE(),
'on tehtud UPDATE käsk',
CONCAT('vanad andmed - ', 'auto: ', deleted.autoNimi, ', aasta: ', deleted.aasta, ', auto number: ', deleted.autoNR, ', omanik nimi: ', o1.nimi,
' | uued andmed - ', 'auto: ', inserted.autoNimi, ', aasta: ', inserted.aasta, ', auto number: ', inserted.autoNR, ', omanik nimi: ', o2.nimi),
SUSER_NAME()
FROM deleted
inner join inserted ON deleted.autoID = inserted.autoID
inner join omanik o1 ON o1.omanikID=deleted.omanikID
inner join omanik o2 ON o2.omanikID=inserted.omanikID
Sisestan andmed
insert into autoregister(autoNimi, aasta, autoNR, omanikID) VALUES
('Mitsubishi', 2008, '286MGE', 1),
('Toyota', 1996, '361MGW', 2)

Uuendan andmed
UPDATE autoregister
SET omanikID = 1
WHERE autoID = 8;

Tehtud tegevused logi tabelis

