Tabelid

--Tabelit
CREATE TABLE Autor (
AutorID INT IDENTITY(1,1) PRIMARY KEY,
AutorNimi VARCHAR(100) NOT NULL,
Riik NVARCHAR(50)
);
CREATE TABLE Raamat (
RaamatID INT IDENTITY(1,1) PRIMARY KEY,
Pealkiri VARCHAR(200) NOT NULL,
AutorID INT NOT NULL,
LehekülgedeArv INT,
FOREIGN KEY (AutorID) REFERENCES Autor(AutorID)
);
CREATE TABLE Laenutus (
LaenutusID INT IDENTITY(1,1) PRIMARY KEY,
RaamatID INT NOT NULL,
LaenutajaNimi VARCHAR(100),
LaenutuseKuupäev DATE,
FOREIGN KEY (RaamatID) REFERENCES Raamat(RaamatID)
);
CREATE TABLE Logi (
ID INT IDENTITY(1,1) PRIMARY KEY,
Kasutaja VARCHAR(100) NOT NULL,
Kuupaev DATETIME,
Tegevus VARCHAR(200),
Andmed VARCHAR(200)
);
Diagraam
Raamat seostub Autoriga läbi AutroID
Laentus seostub Raamatukogu läbi Laentus

Kasutaja
Kasutaja opilaneMark, tall on õgused lisada ja vaatada andmeid tabelist Raamat, Autor ja Laentus

Kontroll
Ei saab uendama andmeid

Tabel Logi

Triggerit
Lisamine Trigger
CREATE TRIGGER RaamatuLisamine
ON Raamat
AFTER INSERT
AS
BEGIN
INSERT INTO Logi (Kasutaja, Kuupaev, Tegevus, Andmed)
SELECT
SYSTEM_USER,
GETDATE(),
'INSERT Raamat',
CONCAT(
'Raamat: ', r.Pealkiri,
', Autor: ', a.AutorNimi,
ISNULL(CONCAT(', Laenutaja: ', l.LaenutajaNimi, ', Tagastada: ', l.LaenutuseKuupäev), '')
)
FROM inserted r
INNER JOIN Autor a ON r.AutorID = a.AutorID
LEFT JOIN Laenutus l ON r.RaamatID = l.RaamatID;
END;
Kustutamine Trigger
CREATE TRIGGER RaamatuKustutamine
ON Raamat
AFTER DELETE
AS
BEGIN
INSERT INTO Logi (Kasutaja, Kuupaev, Tegevus, Andmed)
SELECT
SYSTEM_USER,
GETDATE(),
'DELETE Raamat',
CONCAT(
'Kustutatud raamat: ', r.Pealkiri,
', Autor: ', a.AutorNimi,
ISNULL(CONCAT(', Laenutaja: ', l.LaenutajaNimi, ', Tagastada: ', l.LaenutuseKuupäev), '')
)
FROM deleted r
INNER JOIN Autor a ON r.AutorID = a.AutorID
LEFT JOIN Laenutus l ON r.RaamatID = l.RaamatID;
DELETE FROM Laenutus
WHERE RaamatID IN (SELECT RaamatID FROM deleted);
END;
DELETE FROM Raamat
WHERE Pealkiri = 'Test';
Triggerite kontroll
Logi tabel

Procedure
See protseduur väljastab andmed autori nime järgi.

Transaktsioon
Tehing lisab tabelisse Raamat kaks raamatut. Salvestuspunkt võimaldab käsuga ROLLBACK eemaldada ainult need lisamised, jättes ülejäänud muudatused puutumatuks.

Minu tegevus andmebaasis on VIEW
See view annab mulle kõik andmeid kõikidest tabelitest
