Триггеры на двух таблицах

SQL SERVER

Pärandtabelite loomine:

Это изображение имеет пустой атрибут alt; его имя файла - pilt-37.png

Tootaja tabeli loomine:

 CREATE TABLE Tootaja(
 id INT PRIMARY KEY identity(1,1),
nimi VARCHAR(100),
klientID int Foreign Key References Telefoniteenus(TelefoniteenusID));

Tabelid on seotud:

Kolme kirje lisamine vanasse tabelisse:

Insert Into  Telefoniteenus (kliendi_nimi,telefoninumbe,maksumus,registreeritud_alates)
 Values ('Vlad Andreev','+37254885684',15,'2022-12-24');
 Insert Into  Telefoniteenus (kliendi_nimi,telefoninumbe,maksumus,registreeritud_alates)
 Values ('Oleg Andreev','+37254885685',15,'2022-12-24');
 Insert Into  Telefoniteenus (kliendi_nimi,telefoninumbe,maksumus,registreeritud_alates)
 Values ('Franchesco Andreev','+37254885686',15,'2022-12-24');
 select * from Telefoniteenus

TRIGER MIS JÄLGIB TABELISSE LISAMINE:

 CREATE TRIGGER Tootajalisamine
ON Tootaja
FOR INSERT
AS 
BEGIN
    INSERT INTO logi (kuupaev, andmed, kasutaja,tegevus)
    SELECT GETDATE(),
           CONCAT(inserted.nimi,', ',rt.kliendi_nimi),
           USER,
		    'tootaja on lisatud'
    FROM inserted
    inner join Telefoniteenus rt on inserted.klientID =rt.TelefoniteenusID
END;

Kontrol:

insert into Tootaja (nimi,klientID)
values ('Oleg andreev',1)
select * from Tootaja
select * from logi

TRIGER MIS JÄLGIB TABELISSE UENDAMINE:

CREATE TRIGGER totajauuendamine
ON Tootaja
AFTER UPDATE
AS 
BEGIN
    INSERT INTO logi (Kuupaev, Kasutaja, Andmed, Tegevus)
    SELECT GETDATE(),
           USER,
           CONCAT('Vanad andmed: ', deleted.nimi, ', ', rt1.kliendi_nimi, ' Uued andmed: ', inserted.nimi, ', ', rt2.kliendi_nimi),
           'Tootaja on uuendatud'
    FROM deleted
    INNER JOIN Telefoniteenus rt1 ON deleted.klientID = rt1.TelefoniteenusID
	INNER JOIN inserted ON deleted.id = inserted.id
    INNER JOIN Telefoniteenus rt2 ON inserted.klientID = rt2.TelefoniteenusID
END;

Kontrol:

update Tootaja
set nimi='Oleg Olegov'
where id =3;
select * from  tootaja;
	select* from logi;

XAMPP:

XAMPPis käsitleti logi ja Telefoniteenuse tabeleid viimase ülesande raames ja neid ei kustutatud.

Tootaja tabeli loomine:

 CREATE TABLE Tootaja(
 id INT PRIMARY KEY AUTO_INCREMENT,
nimi VARCHAR(100),
klientID int,
 Foreign Key (klientID) References Telefoniteenus(TelefoniteenusID));

Kolme kirje lisamine vanasse tabelisse:

Insert Into  Telefoniteenus (kliendi_nimi,telefoninumbe,maksumus,registreeritud_alates)
 Values ('Vlad Andreev','+37254885684',15,'2022-12-24');
 Insert Into  Telefoniteenus (kliendi_nimi,telefoninumbe,maksumus,registreeritud_alates)
 Values ('Oleg Andreev','+37254885685',15,'2022-12-24');
 Insert Into  Telefoniteenus (kliendi_nimi,telefoninumbe,maksumus,registreeritud_alates)
 Values ('Franchesco Andreev','+37254885686',15,'2022-12-24');
 select * from Telefoniteenus

TRIGER MIS JÄLGIB TABELISSE LISAMINE:

INSERT INTO logi (Kuupaev, Andmed, Kasutaja, Tegevus)
SELECT NOW(), CONCAT(NEW.nimi, ', ', te.kliendi_nimi), USER(), 'tootaja on lisatud'
FROM Telefoniteenus te
WHERE te.TelefoniteenusID = NEW.klientID

Kontrol:

insert into Tootaja (nimi,klientID)
values ('Oleg andreev',1)
select * from Tootaja
select * from logi

Tootaja tabel:

Logi tabel:

TRIGER MIS JÄLGIB TABELISSE UUEMINE:

INSERT INTO logi (Kuupaev, Andmed, Kasutaja, Tegevus)
SELECT NOW(), CONCAT('Vanad andmed: ', OLD.nimi, ', ', te1.kliendi_nimi, ' Uued andmed: ', NEW.nimi, ', ', te2.kliendi_nimi),
USER(), 'Tootaja uuendamine'
FROM Tootaja t
INNER JOIN Telefoniteenus te1 ON OLD.klientID = te1.TelefoniteenusID
INNER JOIN Telefoniteenus te2 ON NEW.klientID = te2.TelefoniteenusID
WHERE t.id = NEW.id;

Kontrol:

update Tootaja
set nimi='Oleg Olegov'
where id =3;
select * from  tootaja;
	select* from logi;

Tootaja tabel:

Logi Tabel

KASUTAJAD

kasutaja ei näe logitabelit

GRANT SELECT, ALTER ON Tootaja TO OpilaneArtur;
GRANT SELECT, ALTER ON Telefoniteenus TO OpilaneArtur;

GRANT SELECT, ALTER ON Tootaja TO dsfsdfs;
GRANT SELECT, ALTER ON Telefoniteenus TO dsfsdfs;