Triger oma ülesanne

  • Looge tabel Elektroonikapood, lisage sinna väljad – id, hind, toote tootja, mudel, elektroonika tüüp (telefon, arvuti jne).
  • User, Kuupäev, andmed ja tegevus
  • UPDATE, DELETE
  • 1) Uue toote lisamine id järgi
    2) Kustutamine id järgi 
    3) Artikli hinna otsimine, mis on madalam kui sisestatud number (nt otsi hind alla 20).
CREATE TABLE Elektroonikapood(
id int primary key identity(1,1),
hind int,
toote_tootja varchar(80),
mudel varchar(80),
elektronika_tüüp varchar(80))
CREATE TABLE logi( id int primary key identity(1,1), 
kuupaev datetime, 
kasutaja varchar(100), 
andmed TEXT, 
tegevus varchar(100)); 

insert into elektroonikapood(hind,toote_tootja,mudel,elektronika_tüüp)
values(1000,'apple','iphone 13','telephone');

Triger mis jälgib andmete uuendamine tabelis

CREATE TRIGGER elektroonikapoodUuendamine
ON elektroonikapood
FOR UPDATE
AS
INSERT INTO logi(kuupaev, kasutaja, andmed, tegevus)
SELECT GETDATE(), USER, 
CONCAT('VANAD - ',
deleted.toote_tootja, ', ', deleted.elektronika_tüüp, deleted.mudel,
'UUED -',inserted.toote_tootja, ', ', inserted.elektronika_tüüp,inserted.mudel),
'elektroonikapood on uuendatud'
FROM deleted INNER JOIN inserted
ON deleted.id=inserted.id
--kontroll

SELECT * from elektroonikapood;
UPDATE elektroonikapood SET elektronika_tüüp = 'luca'
where id = 3;
SELECT * from elektroonikapood;
select * from logi;

Triger mis jälgib kustutamine tabelis

CREATE TRIGGER elektroonikapoodKustutamine
ON elektroonikapood
FOR DELETE
AS
INSERT INTO logi(kuupaev, kasutaja, andmed, tegevus)
SELECT GETDATE(), USER, 
CONCAT(deleted.toote_tootja, ', ', deleted.mudel, ', ', deleted.elektronika_tüüp),
'elektroonikapood on kustatud'
FROM deleted

delete from elektroonikapood
where id = 2;

Proceduurid

andmete lisamise protseduur

CREATE PROCEDURE AddElektroonikaPood

@hind INT,
@toote_tootja VARCHAR(80),
@mudel VARCHAR(80),
@elektronika_tüüp VARCHAR(80)

AS
BEGIN
INSERT INTO Elektroonikapood (hind, toote_tootja, mudel, elektronika_tüüp)
VALUES (@hind, @toote_tootja, @mudel, @elektronika_tüüp);
END;

EXEC AddElektroonikaPood
@hind = 1000,
@toote_tootja = ‘Samsung’,
@mudel = ‘Galaxy S21’,
@elektronika_tüüp = ‘smartphone’;

protseduur, mis kustutab andmeid

CREATE PROCEDURE DeleteElektroonikaPood
@id INT
AS
BEGIN
DELETE FROM Elektroonikapood
WHERE id = @id;
END;

EXEC DeleteElektroonikaPood
@id = 1;

protseduur, mis otsib id järgi

CREATE PROCEDURE OotsiElektroonikaPood
@id INT
AS
BEGIN
SELECT *
FROM Elektroonikapood
WHERE id = @id;
END;

EXEC OotsiElektroonikaPood
@id = 3;

XAMPP

Создание таблиц

CREATE TABLE Elektroonikapood(
id int primary key AUTO_INCREMENT,
hind int,
toote_tootja varchar(80),
mudel varchar(80),
elektronika_tüüp varchar(80))
CREATE TABLE logi( 
id int primary key AUTO_INCREMENT, 
kuupaev datetime, 
kasutaja varchar(100), 
andmed TEXT, 
tegevus varchar(100)); 
insert into elektroonikapood(hind,toote_tootja,mudel,elektronika_tüüp)
values(1000,'apple','iphone 13','telephone');

Triger mis jälgib andmete uuendamine tabelis

Triger mis jälgib kustutamine tabelis

andmete lisamise protseduur

DELIMITER //

CREATE PROCEDURE AddElektroonikaPoodItem(
    IN p_hind INT,
    IN p_toote_tootja VARCHAR(80),
    IN p_mudel VARCHAR(80),
    IN p_elektronika_tüüp VARCHAR(80)
)
BEGIN
    INSERT INTO Elektroonikapood (hind, toote_tootja, mudel, elektronika_tüüp)
    VALUES (p_hind, p_toote_tootja, p_mudel, p_elektronika_tüüp);
END //

DELIMITER ;

проверка

protseduur, mis kustutab andmeid

DELIMITER //

CREATE PROCEDURE DeleteElektroonikaPoodItemByID(
    IN p_id INT
)
BEGIN
    DELETE FROM Elektroonikapood WHERE id = p_id;
END //

DELIMITER ;

protseduur, mis otsib hind järgi

CREATE PROCEDURE ootsiElektroonikaPood( 
IN p_max_price INT ) 
BEGIN SELECT * FROM Elektroonikapood 
WHERE hind < p_max_price; 
END;

Проверка

NEWNEWNEWNEW

CREATE TABLE Elektroonikapood(
id int primary key identity(1,1),
hind int,
toode varchar(80),
mudel varchar(80),
elektronika_tuup varchar(80))
CREATE TABLE logi( id int primary key identity(1,1), 
kuupaev datetime, 
kasutaja varchar(100), 
andmed TEXT, 
tegevus varchar(100)); 
CREATE TABLE Ladu (
    toodeID INT PRIMARY KEY IDENTITY(1,1),
    kogus INT,
    elektronika_tuupID INT,
    FOREIGN KEY (elektronika_tuupID) REFERENCES Elektroonikapood(id)
);
CREATE TRIGGER elektroonikaPoodUuendamine
ON Elektroonikapood
FOR UPDATE
AS
BEGIN
    INSERT INTO logi (kuupaev, andmed, kasutaja, tegevus)
    SELECT GETDATE(),
        CONCAT('VANAD ANDMED: ', deleted.hind, ', ', deleted.toode, ', ', deleted.mudel, ', ', deleted.elektronika_tuup,
        ' UUED ANDMED: ', inserted.hind, ', ', inserted.toode, ', ', inserted.mudel, ', ', inserted.elektronika_tuup),
        USER,
        'Uuendati elektroonikapoodi'
    FROM deleted
    INNER JOIN inserted ON deleted.id = inserted.id;
END;

проверка

insert into Elektroonikapood(hind,toode,mudel,elektronika_tuup)
VALUES(1000,'iphone','12','smartphone');
select * from Elektroonikapood
select * from logi
insert into Ladu(kogus,elektronika_tuupID)
values(11,2)
UPDATE Elektroonikapood
SET hind = 1100,
    toode = 'samsung',
    mudel = 's22',
    elektronika_tuup = 2
WHERE id = 1;

добавление

CREATE TRIGGER elektroonikapoodLisamine
ON Elektroonikapood
FOR INSERT
AS
BEGIN
    INSERT INTO logi (kuupaev, andmed, kasutaja, tegevus)
    SELECT GETDATE(),
           CONCAT('Lisati uus kirje: hind - ', i.hind, ', toode - ', i.toode, ', elektronika_tuup - ', i.elektronika_tuup),
           USER,
           'Lisati uus kirje'
    FROM inserted i;
END;

insert into Elektroonikapood(hind,toode,mudel,elektronika_tuup)
VALUES(1300,’iphone’,’13’,’smartphone’);

XAMPP

INSERT INTO logi (kuupaev, andmed, kasutaja, tegevus)
SELECT NOW(),
       CONCAT('UUED ANDMED- ', e.hind, ', ', e.mudel, ', ', e.elektronika_tuup, ', ', l.elektronika_tuupID),
       USER(),
       'elektroonikapood on uuendatud'
FROM elektroonikapood e
INNER JOIN ladu l ON e.id = l.elektronika_tuupID
WHERE e.id = NEW.id

На обновление не успел