Автосервис Глеб Сецов

Loome andmebaas autoteenindus

SQL
CREATE DATABASE autoteenindus
USE autoteenindus

tabelinimi, andmete sisestamiseks ja väljade nimed tabelis, nt. Loo tabel Auto (autoId, , autotootja, autonumbrimärk, autovärv).

SQL
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).

SQL
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)

SQL
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

SQL
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)

SQL
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

SQL
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

SQL
GRANT SELECT, INSERT, UPDATE, DELETE ON autoteenindus TO Manager;

Kontrollime õiguse vaadata autoteenindus

Kontrollime õiguse vaadata Logi

Loome teist tabelid

SQL
CREATE TABLE Omanik(
    OwnerId INT PRIMARY KEY IDENTITY(1,1),
    Owner1 VARCHAR(100) UNIQUE
);

loome seosed Omanik ja autoteeniduse vahel

SQL
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

SQL
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

SQL
update autoteenindus 
set autotootja='mercedes', OwnerId=2 
WHERE AutoId = 5;

XAMPP

SQL
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