Ülesanne Bogdan Sergachev

Ü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;