ÜLESANNE:
- Andmebaasinimi – raamatukogu
- tabelinimi, andmete sisestamiseks ja väljade nimed tabelis, nt. Loo tabel raamatu (raamatuID, raamatuNimi, raamatuHind),
raamatuBroneeri(raamatuID, ostjaNimi, ostjaPerenimi) - Loo tabel trigerite töö salvestamiseks. Näiteks tabel logi (logiID, kuupaev, andmed, kasutaja).
- Trigerinimed ja mida triger peab tegema seoses eelnevalt loodud tabeliga. – Insert, delete
- Kasutajanimi, kes saab töötada ainult varem loodud tabeliga (mitte logi tabel) – Kasutajanimi: Juht, parool: 123456, tabel: raamatuBroneri
LUUA DATABASE:
CREATE DATABASE raamatukogu;
USE raamatukogu;
LUUA TABLES:
CREATE TABLE raamatu(
raamatuID INT IDENTITY PRIMARY KEY,
raamatuNimi VARCHAR(60),
raamatuHind INT);
CREATE TABLE raamatuBroneeri(
raamatuID INT IDENTITY PRIMARY KEY,
ostjaNimi VARCHAR(60),
ostjaPerenimi VARCHAR(60));
CREATE TABLE logi(
logiID INT PRIMARY KEY IDENTITY(1,1),
kuupaev DATETIME,
sisestatudAndmed TEXT,
kasutaja VARCHAR(100));
CREATE TRIGGERS:
CREATE TRIGGER raamatuBroneeriLisamine
ON raamatuBroneeri --tabel, mis jälgitakse
FOR INSERT
AS
INSERT INTO logi(kuupaev, sisestatudAndmed, kasutaja)
SELECT
GETDATE(),
CONCAT('lisatud andmed ', inserted.ostjaNimi, ', ',inserted.ostjaPerenimi),
USER
FROM inserted
CREATE TRIGGER raamatuBroneeriKustutamine
ON raamatuBroneeri --tabel, mis jälgitakse
FOR DELETE
AS
INSERT INTO logi(kuupaev, sisestatudAndmed, kasutaja)
SELECT
GETDATE(),
CONCAT('lisatud Kustutamine: ', deleted.ostjaNimi, ', ',deleted.ostjaPerenimi),
USER
FROM deleted
CREATE TRIGGER raamatuBroneeriUuendamine
ON raamatuBroneeri --tabel, mis jälgitakse
FOR UPDATE
AS
INSERT INTO logi(kasutaja, kuupaev, sisestatudAndmed)
SELECT
GETDATE(),
CONCAT('Kustutatud andmed: ', deleted.ostjaNimi, ', ', deleted.ostjaPerenimi,
' Uued andmed: ',inserted.ostjaNimi, ', ', inserted.ostjaPerenimi),
USER
FROM deleted INNER JOIN inserted
ON deleted.raamatuId=inserted.raamatuId
KONTROLL TRIGGERS:
--kontrollimiseks lisame raamatuBroneeri
INSERT INTO raamatuBroneeri(ostjaNimi, ostjaPerenimi)
VALUES ('Martin', 'Sild');
SELECT * FROM raamatuBroneeri;
SELECT * FROM logi;
--kontrollimiseks kustutame raamatu tabelis raamatuBroneeri
DELETE FROM raamatuBroneeri
WHERE raamatuId=5;
SELECT * FROM raamatuBroneeri;
SELECT * FROM logi;
--kontrollimiseks uuendame raamatuBroneeri
SELECT * FROM raamatuBroneeri;
UPDATE raamatuBroneeri SET ostjaNimi='Hleb', ostjaPerenimi='Bronja'
WHERE raamatuId=3;
SELECT * FROM raamatuBroneeri;
SELECT * FROM logi;



CREATE USER:



Ta saab kirjutada käsud ainult tabelis raamatu Brooneeri;






Raamatukogu seos andmebaas
Luuame andmebaas
--luua database
CREATE DATABASE raamatukogu;
USE raamatukogu;
Luuame tabelit
--luua tabelit
CREATE TABLE raamatu(
raamatuID INT IDENTITY PRIMARY KEY,
raamatuNimi VARCHAR(60),
raamatuHind INT);
insert into raamatu(raamatuNimi,raamatuHind)
Values ('Kampsun ja päike', 27);
insert into raamatu(raamatuNimi,raamatuHind)
Values ('Kaka ja kevad', 13);
insert into raamatu(raamatuNimi,raamatuHind)
Values ('Vanaema õunapuu otsas', 7);
CREATE TABLE raamatuBroneeri(
raamatuBroneeriID INT IDENTITY PRIMARY KEY,
ostjaNimi VARCHAR(60),
ostjaPerenimi VARCHAR(60));
CREATE TABLE logi(
logiID INT PRIMARY KEY IDENTITY(1,1),
kuupaev DATETIME,
sisestatudAndmed TEXT,
kasutaja VARCHAR(100));
Tegime seosed kahe tabeliga
ALTER TABLE raamatuBroneeri ADD raamatuID int;
ALTER TABLE raamatuBroneeri ADD CONSTRAINT fk_raamatu
FOREIGN KEY (raamatuID) REFERENCES raamatu(raamatuID)
loome trigeri raamatuBroneeriLisamine
CREATE TRIGGER raamatuBroneeriLisamine
ON raamatuBroneeri --tabel, mis jälgitakse
FOR INSERT
AS
INSERT INTO logi(kuupaev, sisestatudAndmed, kasutaja)
SELECT
GETDATE(),
CONCAT('lisatud andmed ', inserted.ostjaNimi, ', ',inserted.ostjaPerenimi, ', ', raamatu.raamatuNimi),
USER
FROM inserted
Inner join raamatu
ON raamatu.raamatuID= inserted.raamatuBroneeriID
Kontrollime
INSERT INTO raamatuBroneeri(ostjaNimi, ostjaPerenimi, raamatuID)
VALUES('Bogdan', 'Sats', 3);
Select * from logi;
select * from raamatuBroneeri;

loome trigeri raamatuBroneeriKustutamine
CREATE TRIGGER raamatuBroneeriKustutamine
ON raamatuBroneeri --tabel, mis jälgitakse
FOR DELETE
AS
INSERT INTO logi(kuupaev, sisestatudAndmed, kasutaja)
SELECT
GETDATE(),
CONCAT('kustutatud andmed ', deleted.ostjaNimi, ', ',deleted.ostjaPerenimi, ', ', raamatu.raamatuNimi),
USER
FROM deleted
Inner join raamatu
ON raamatu.raamatuID= deleted.raamatuBroneeriID
kontrollimiseks kustutame raamatu tabelis raamatuBroneeri
DELETE FROM raamatuBroneeri
WHERE raamatuBroneeriID=3;
SELECT * FROM raamatuBroneeri;
SELECT * FROM logi;

Loome trigeri raamatuBroneeriUuendamine
CREATE TRIGGER raamatuBroneeriUuendamine
ON raamatuBroneeri --tabel, mis jälgitakse
FOR UPDATE
AS
INSERT INTO logi(kuupaev, sisestatudAndmed, kasutaja)
SELECT
GETDATE(),
CONCAT(
'vanad andmed - ', deleted.ostjaNimi, ', ',deleted.ostjaPerenimi, ', ', r1.raamatuNimi,
'uuendatud andmed - ',inserted.ostjaNimi, ', ',inserted.ostjaPerenimi, ', ', r2.raamatuNimi),
USER
FROM deleted
Inner join inserted ON deleted.raamatuID= inserted.raamatuID
Inner join raamatu r1 On deleted.raamatuID=r1.raamatuID
Inner join raamatu r2 On inserted.raamatuID=r2.raamatuID
kontrollimiseks uuendamine
--kontroll
UPDATE raamatuBroneeri SET ostjaNimi='Ramas',ostjaPerenimi='Saar', raamatuID=3
WHERE raamatuBroneeriID=2;
SELECT * FROM raamatuBroneeri;
SELECT * FROM logi;

Loome User:



Ta saab kirjutada käsud ainult tabelis raamatu Brooneeri; (GRANT)
GRANT UPDATE, SELECT, DELETE, INSERT on raamatuBroneeri to Juht;

XAMPP:
Luuame andmebaas
LUUA DATABASE:
CREATE DATABASE raamatukogu;
USE raamatukogu;
LUUA TABLES:
CREATE TABLE raamatu(
raamatuID INT AUTO_INCREMENT PRIMARY KEY,
raamatuNimi VARCHAR(60),
raamatuHind INT);
insert into raamatu(raamatuNimi,raamatuHind)
Values ('Kampsun ja päike', 27);
insert into raamatu(raamatuNimi,raamatuHind)
Values ('Kaka ja kevad', 13);
insert into raamatu(raamatuNimi,raamatuHind)
Values ('Vanaema õunapuu otsas', 7);
CREATE TABLE raamatuBroneeri(
raamatuBroneeriID INT AUTO_INCREMENT PRIMARY KEY,
ostjaNimi VARCHAR(60),
ostjaPerenimi VARCHAR(60));
CREATE TABLE logi(
logiID INT PRIMARY KEY AUTO_INCREMENT,
kuupaev DATETIME,
sisestatudAndmed TEXT,
kasutaja VARCHAR(100));


CREATE TRIGGERS:
BEGIN
INSERT INTO logi (kuupaev, sisestatudAndmed, kasutaja)
VALUES (NOW(), CONCAT('Kustutatud andmed: ', OLD.ostjaNimi, ', ', OLD.ostjaPerenimi), USER());
END
BEGIN
INSERT INTO logi (kuupaev, sisestatudAndmed, kasutaja)
VALUES (NOW(), CONCAT('lisatud andmed ', NEW.ostjaNimi, ', ', NEW.ostjaPerenimi), USER());
END
BEGIN
INSERT INTO logi (kuupaev, sisestatudAndmed, kasutaja)
VALUES (NOW(), CONCAT('Кустутatud andmed: ', OLD.ostjaNimi, ', ', OLD.ostjaPerenimi,
' Uued andmed: ', NEW.ostjaNimi, ', ', NEW.ostjaPerenimi), USER());
END
Tegime seosed kahe tabeliga:
ALTER TABLE raamatuBroneeri ADD raamatuID int;
ALTER TABLE raamatuBroneeri ADD CONSTRAINT fk_raamatu
FOREIGN KEY (raamatuID) REFERENCES raamatu(raamatuID)

loome trigeri raamatuBroneeriLisamine:
BEGIN
INSERT INTO logi (kuupaev, sisestatudAndmed, kasutaja)
SELECT NOW(),
CONCAT('lisatud andmed ', NEW.ostjaNimi, ', ', NEW.ostjaPerenimi, ', ', raamatu.raamatuNimi),
USER()
FROM raamatu
WHERE raamatu.raamatuID = NEW.raamatuBroneeriID;
END

Kontrollime:
INSERT INTO raamatuBroneeri(ostjaNimi, ostjaPerenimi, raamatuID)
VALUES('Bogdan', 'Sats', 3);
Select * from logi;
select * from raamatuBroneeri;


loome trigeri raamatuBroneeriKustutamine:
BEGIN
INSERT INTO logi (kuupaev, sisestatudAndmed, kasutaja)
SELECT NOW(),
CONCAT('kustutatud andmed ', OLD.ostjaNimi, ', ', OLD.ostjaPerenimi, ', ', raamatu.raamatuNimi),
USER()
FROM raamatu
WHERE raamatu.raamatuID = OLD.raamatuBroneeriID;
END

kontrollimiseks kustutame raamatu tabelis raamatuBroneeri:
DELETE FROM raamatuBroneeri
WHERE raamatuBroneeriID=3;
SELECT * FROM raamatuBroneeri;
SELECT * FROM logi;

Loome trigeri raamatuBroneeriUuendamine:
BEGIN
INSERT INTO logi (kuupaev, sisestatudAndmed, kasutaja)
SELECT NOW(),
CONCAT(
'vanad andmed - ', OLD.ostjaNimi, ', ', OLD.ostjaPerenimi, ', ', r1.raamatuNimi,
' uuendatud andmed - ', NEW.ostjaNimi, ', ', NEW.ostjaPerenimi, ', ', r2.raamatuNimi),
USER()
FROM raamatu r1
JOIN raamatu r2 ON r2.raamatuID = NEW.raamatuID
WHERE r1.raamatuID = OLD.raamatuID;
END

kontrollimiseks uuendamine:
UPDATE raamatuBroneeri SET ostjaNimi='Ramas',ostjaPerenimi='Saar', raamatuID=3
WHERE raamatuBroneeriID=2;
SELECT * FROM raamatuBroneeri;
SELECT * FROM logi;


Loome User:


Kasutaja kontrollimine







