Loome andmebaas autoteenindus
CREATE DATABASE autoteenindus
USE autoteenindus
tabelinimi, andmete sisestamiseks ja väljade nimed tabelis, nt. Loo tabel Auto (autoId, , autotootja, autonumbrimärk, autovärv).
Create table autoteenindus(
autoId int primary key identity(1,1),
autotootja varchar(50),
autonumberimark varchar(50),
autovarv varchar(50),
);
select * from autoteenindus;
Loo tabel trigerite töö salvestamiseks. Näiteks tabel logi (logiID, kuupaev, sissestatudAndmed, kasutaja).
create table Logi(
id int primary key identity(1,1),
kasutaja varchar(100),
kuupaev dateTime,
sisestatudAndmed text,
);
select * from Logi;
Trigerinimed ja mida triger peab tegema seoses eelnevalt loodud tabeliga. (Insert)
create trigger AutoLisamine
ON autoteenindus
FOR insert
AS
BEGIN
INSERT INTO Logi (kasutaja, kuupaev, sisestatudAndmed)
SELECT
USER,
GETDATE(),
CONCAT('Lisatud andmed: ', inserted.autotootja, ', ', inserted.autonumberimark,', ',inserted.autovarv)
FROM inserted;
END;
--kontroll
insert into autoteenindus(autotootja,autonumberimark,autovarv)
Values('Toyota','ABC123','Must')
select * from autoteenindus;
select * from logi;
XAMPP

INSERT INTO Logi (kasutaja, kuupaev, sisestatudAndmed)
VALUES(
USER(),
NOW(),
CONCAT('Lisatud andmed: ', NEW.autotootja, ', ', NEW.autonumberimark,', ',NEW.autovarv))
Kontroll


Trigerinimed ja mida triger peab tegema seoses eelnevalt loodud tabeliga. (Update)
CREATE TRIGGER AutoUuendamine
ON autoteenindus
FOR delete
AS
BEGIN
INSERT INTO logi (kasutaja, kuupaev, sisestatudAndmed)
SELECT
USER,
GETDATE(),
CONCAT('vanad andmed: ', deleted.autotootja, ', ', deleted.autonumberimark, ', ', deleted.autovarv,
'Uued andmed: ', inserted.autotootja, ', ',inserted.autonumberimark, ', ', inserted.autovarv)
FROM deleted INNER JOIN inserted
on deleted.autoId=inserted.autoId
END;
--kontroll
select * from autoteenindus;
update autoteenindus set autotootja='BMW'
where autoId=1;
select * from autoteenindus;
select * from logi;
XAMPP

INSERT INTO logi (kasutaja, kuupaev, sisestatudAndmed)
VALUES(
USER(),
NOW(),
CONCAT('vanad andmed: ', OLD.autotootja, ', ', OLD.autonumberimark, ', ', OLD.autovarv,
'Uued andmed: ', NEW.autotootja, ', ',NEW.autonumberimark, ', ', NEW.autovarv))
kontroll


Kasutajanimi, kes saab töötada ainult varem loodud tabeliga (mitte logi tabel) Kasutajanimi: Manager, parool:qwerty1, tabel: Auto



Anname kasutajale õigused
GRANT SELECT, INSERT, UPDATE, DELETE ON autoteenindus TO Manager;
Kontrollime õiguse vaadata autoteenindus

Kontrollime õiguse vaadata Logi


Loome teist tabelid
CREATE TABLE Omanik(
OwnerId INT PRIMARY KEY IDENTITY(1,1),
Owner1 VARCHAR(100) UNIQUE
);
loome seosed Omanik ja autoteeniduse vahel
ALTER TABLE autoteenindus ADD OwnerId int;
ALTER TABLE autoteenindus ADD CONSTRAINT fk_Owner1
FOREIGN KEY (OwnerId) References Omanik(OwnerId)
INSERT INTO autoteenindus(autotootja, autonumberimark, autovarv, OwnerId)
VALUES('BMW', '123ABC', 'Sinine', 2);
INSERT INTO Omanik(Owner1)
VALUES ('BMW ');
INSERT INTO Omanik(Owner1)
VALUES ('NISSAN ');
Loome trigger AutoUuendamine2
CREATE TRIGGER AutoUuendamine2
ON autoteenindus
FOR UPDATE
AS
BEGIN
INSERT INTO Logi(kasutaja, kuupaev, sisestatudAndmed)
SELECT USER, GETDATE(), CONCAT(
'Auto на обновлен',
' Vanad andmed - ', deleted.autotootja, ', ', m1.Owner1,
' Uuendatud andmed - ', inserted.autotootja, ', ', m2.Owner1
)
FROM deleted
INNER JOIN inserted ON deleted.autoId = inserted.autoId
INNER JOIN Omanik m1 ON deleted.OwnerId = m1.OwnerId
INNER JOIN Omanik m2 ON inserted.OwnerId = m2.OwnerId;
END;
Kontroll
update autoteenindus
set autotootja='mercedes', OwnerId=2
WHERE AutoId = 5;

XAMPP

INSERT INTO Logi(kasutaja, kuupaev, sisestatudAndmed)
SELECT USER(), NOW(), CONCAT(
' Vanad andmed - ', OLD.autotootja, ', ', m1.Owner1,
' Uuendatud andmed - ', NEW.autotootja, ', ', m2.Owner1
)
FROM OLD
INNER JOIN NEW ON OLD.autoId = NEW.autoId
INNER JOIN Omanik m1 ON OLD.OwnerId = m1.OwnerId
INNER JOIN Omanik m2 ON NEW.OwnerId = m2.OwnerId
