Töötaja ülesanne

SQL SERVER

Tabeli loomine ja andmete lisamine

CREATE TABLE tootaja (
    tootajaId INT PRIMARY KEY identity (1,1),
    tootaja_nimi VARCHAR(50),
    elukutse VARCHAR(50),
    kogemusi INT,
    tookoht VARCHAR(30)
);
INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht)
VALUES ('Artjom', 'programmeerija', 8, 'Office');
INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht)
VALUES ('Maksim', 'Manager', 5, 'Restoraunt');
INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht)
VALUES ('Yarik', 'Ehitaja', 12, 'Ehitusplats');
INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht)
VALUES ('Luca', 'Õpetaja', 3, 'Kool');
INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht)
VALUES ('Sasha', 'Arst', 10, 'Haigla');
CREATE TABLE logi(
    id int PRIMARY KEY identity (1,1),
    kuupaev DATETIME,
    kasutaja varchar(100),
	andmed TEXT,
	tegevus varchar(100))

Trigerid:

DELETE Triger

CREATE TRIGGER tootajaKustutamine
ON tootaja
AFTER DELETE
AS
BEGIN
    INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus)
    SELECT GETDATE(), SUSER_SNAME(), 
	CONCAT('tootaja_nimi: ', deleted.tootaja_nimi, ', elukutse: ', deleted.elukutse, ', kogemusi: ', deleted.kogemusi, ', tookoht: ', deleted.tookoht), 'tootaja on kustutatud'
    FROM deleted;
END;

Kontroll:

INSERT Triger

CREATE TRIGGER tootajaLisamine
ON tootaja
FOR INSERT
AS
BEGIN
    INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus)
    SELECT GETDATE(), SUSER_SNAME(), 
	CONCAT('tootaja_nimi: ', inserted.tootaja_nimi, ', elukutse: ', inserted.elukutse, ', kogemusi: ', inserted.kogemusi, ', tookoht: ', inserted.tookoht), 'tootaja on lisatud'
    FROM inserted;
END;

Kontroll:

Protseduurid:

Uue töötaja lisamine

CREATE PROCEDURE Lisatöötaja
    @tootaja_nimi VARCHAR(50),
    @elukutse VARCHAR(50),
    @kogemusi INT,
    @tookoht VARCHAR(30)
AS
BEGIN
    INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht)
    VALUES (@tootaja_nimi, @elukutse, @kogemusi, @tookoht);
	SELECT * FROM tootaja;
	SELECT * FROM logi;
END;

Kontroll:

Töötaja eemaldamine

CREATE PROCEDURE Eemaldatöötaja
    @tootajaId INT
AS
BEGIN
    DELETE FROM tootaja WHERE tootajaId = @tootajaId;
END;

Kontroll:

Töötajate andmete muutmine

CREATE PROCEDURE MuudaTöötajaAndmeid
    @tootajaId INT,
    @tootaja_nimi VARCHAR(50),
    @elukutse VARCHAR(50),
    @kogemusi INT,
    @tookoht VARCHAR(30)
AS
BEGIN
    UPDATE tootaja
    SET
        tootaja_nimi = @tootaja_nimi,
        elukutse = @elukutse,
        kogemusi = @kogemusi,
        tookoht = @tookoht
    WHERE
        tootajaId = @tootajaId;
	SELECT * FROM tootaja;
	SELECT * FROM logi;
END;

Kontroll:

Lisamine uus tabel Juhataja ja 2 uus pästikud

loomine tabel ja andmete lisamine

CREATE TABLE Juhataja(
    JuhatajaId INT PRIMARY KEY IDENTITY (1,1),
    TootajaId INT,
	FOREIGN KEY (TootajaId) REFERENCES Tootaja(TootajaId),
    institutsioon VARCHAR(50),
    palk DECIMAL(10, 2));
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (2, 'institut 1', 3000.00);
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (4, 'institut 2', 2500.00);
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (5, 'institut 3', 3500.00);
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (1, 'institut 4', 4500.00);
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (3, 'institut 5', 1500.00);

Lisamine triger

CREATE TRIGGER Juhataja_InsertTrigger
ON Juhataja
AFTER INSERT
AS
BEGIN
INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus)
SELECT GETDATE(), USER, 
CONCAT('institutsioon: ', I.institutsioon, ', palk: ', I.palk, 
      ', tootaja_nimi: ', T.tootaja_nimi, ', elukutse: ', T.elukutse, 
      ', kogemusi: ', T.kogemusi, ', tookoht: ', T.tookoht), 'Juhataja on lisatud'
FROM inserted I
INNER JOIN Tootaja T ON I.TootajaId = T.TootajaId;

Kontroll:

SELECT * FROM Juhataja
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (1, 'institut 6', 2000.00);
SELECT * FROM Juhataja
SELECT * FROM logi

Uuendamine triger

CREATE TRIGGER Juhataja_UpdateTrigger
ON Juhataja
AFTER UPDATE
AS
INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus)
SELECT GETDATE(), USER, 
CONCAT('institutsioon: ', I.institutsioon, ', palk: ', I.palk, 
        ', tootaja_nimi: ', T.tootaja_nimi, ', elukutse: ', T.elukutse, 
        ', kogemusi: ', T.kogemusi, ', tookoht: ', T.tookoht), 'Juhataja on uuendatud'
FROM inserted I
INNER JOIN Tootaja T ON I.TootajaId = T.TootajaId
INNER JOIN deleted D ON I.JuhatajaId = D.JuhatajaId;

Kontroll:

SELECT * FROM Juhataja
UPDATE Juhataja
SET institutsioon = 'institut 12', palk = 8000.00
WHERE JuhatajaId = 2;
SELECT * FROM Juhataja
SELECT * FROM logi

XAMPP

Tabeli loomine ja andmete lisamine

DELETE triger

INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus)
SELECT NOW(), USER(),
	CONCAT('tootaja_nimi: ', OLD.tootaja_nimi, ', elukutse: ', OLD.elukutse, ', kogemusi: ', OLD.kogemusi, ', tookoht: ', OLD.tookoht), 'tootaja on kustutatud'

Kontroll:

INSERT triger

INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus)
SELECT NOW(), USER(), 
	CONCAT('tootaja_nimi: ', NEW.tootaja_nimi, ', elukutse: ', NEW.elukutse, ', kogemusi: ', NEW.kogemusi, ', tookoht: ', NEW.tookoht), 'tootaja on lisatud'

Kontroll:

Protseduurid

Uue töötaja lisamine

BEGIN
    INSERT INTO tootaja (tootaja_nimi, elukutse, kogemusi, tookoht)
    VALUES (nimi, kutse, kogemus, koht);
	SELECT * FROM tootaja;
	SELECT * FROM logi;
END

Kontroll:

Töötaja eemaldamine

BEGIN
    DELETE FROM tootaja WHERE tootajaId = id;
	SELECT * FROM tootaja;
	SELECT * FROM logi;
END

Kontroll:

Töötajate andmete muutmine

BEGIN
    UPDATE tootaja
    SET
        tootaja_nimi = nimi,
        elukutse = kutse,
        kogemusi = kogemus,
        tookoht = koht
    WHERE
        tootajaId = id;
	SELECT * FROM tootaja;
	SELECT * FROM logi;
END

Kontroll:

Lisamine uus tabel Juhataja ja 2 uus pästikud

loomine tabel ja andmete lisamine

CREATE TABLE Juhataja(
    JuhatajaId INT PRIMARY KEY AUTO_INCREMENT,
    TootajaId INT,
	FOREIGN KEY (TootajaId) REFERENCES Tootaja(TootajaId),
    institutsioon VARCHAR(50),
    palk DECIMAL(10, 2));
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (2, 'institut 1', 3000.00);
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (4, 'institut 2', 2500.00);
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (5, 'institut 3', 3500.00);
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (1, 'institut 4', 4500.00);
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (3, 'institut 5', 1500.00);

Lisamine triger

INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus)
SELECT NOW(), USER(), 
CONCAT('institutsioon: ', NEW.institutsioon, ', palk: ', NEW.palk, 
      ', tootaja_nimi: ', T.tootaja_nimi, ', elukutse: ', T.elukutse, 
      ', kogemusi: ', T.kogemusi, ', tookoht: ', T.tookoht), 'Juhataja on lisatud'
FROM tootaja
INNER JOIN Tootaja T ON NEW.TootajaId = T.TootajaId

Kontroll:

SELECT * FROM Juhataja;
INSERT INTO Juhataja (TootajaId, institutsioon, palk)
VALUES (1, 'institut 6', 2000.00);
SELECT * FROM Juhataja;
SELECT * FROM logi

Juhataja sai 9, sest ma tegin paar viga päästikus ja see kaitses mind nagu oleksin juba kedagi loonud.

Uuendamine triger

INSERT INTO logi (kuupaev, kasutaja, andmed, tegevus)
SELECT NOW(), USER(), 
CONCAT('institutsioon: ', NEW.institutsioon, ', palk: ', NEW.palk, 
        ', tootaja_nimi: ', T.tootaja_nimi, ', elukutse: ', T.elukutse, 
        ', kogemusi: ', T.kogemusi, ', tookoht: ', T.tookoht), 'Juhataja on uuendatud'
FROM tootaja
INNER JOIN Tootaja T ON NEW.TootajaId = T.TootajaId
INNER JOIN Juhataja OLD ON NEW.JuhatajaId = OLD.JuhatajaId

Kontroll:

SELECT * FROM Juhataja;
UPDATE Juhataja SET institutsioon = 'institut 12', palk = 8000.00
WHERE JuhatajaId = 2;
SELECT * FROM Juhataja;
SELECT * FROM logi

Id segi ajada paarist katsest, ma tegin seda kogemata.