Andmebaasi arvestustöö

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