Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE Lokacja
- (
- lokacja_id INT IDENTITY(1,1) NOT NULL,
- nazwa VARCHAR(50) NOT NULL,
- CONSTRAINT Lokacja_PK PRIMARY KEY CLUSTERED (lokacja_id)
- )
- CREATE TABLE TypSamochodu
- (
- typ_samochodu_id INT IDENTITY(1,1) NOT NULL,
- typ VARCHAR(50) NOT NULL,
- CONSTRAINT TypSamochodu_PK PRIMARY KEY CLUSTERED (typ_samochodu_id)
- )
- CREATE TABLE Wypozyczalnia_Historyczna
- (
- wypozyczalnia_id INT NOT NULL,
- nazwa VARCHAR(50) NOT NULL,
- znizka_stalego_klienta NUMERIC(3,2) NOT NULL,
- lokacja_id INT NOT NULL,
- wazny_od DATETIME2 NOT NULL,
- wazny_do DATETIME2 NOT NULL,
- )
- CREATE TABLE Wypozyczalnia
- (
- wypozyczalnia_id INT IDENTITY(1,1) NOT NULL,
- nazwa VARCHAR(50) NOT NULL,
- znizka_stalego_klienta NUMERIC(3,2) NOT NULL,
- lokacja_id INT NOT NULL,
- wazny_od DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
- wazny_do DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
- PERIOD FOR SYSTEM_TIME (wazny_od, wazny_do),
- CONSTRAINT Wypozyczalnia_PK PRIMARY KEY CLUSTERED(wypozyczalnia_id),
- CONSTRAINT Wypozyczalnia_Lokacja_FK FOREIGN KEY (lokacja_id) REFERENCES Lokacja (lokacja_id)
- )
- WITH ( SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Wypozyczalnia_Historyczna) )
- CREATE TABLE Stanowisko_Historyczna
- (
- stanowisko_id INT NOT NULL,
- nazwa VARCHAR(50) NOT NULL,
- wynagrodzenie NUMERIC (8) NOT NULL,
- wazny_od DATETIME2 NOT NULL,
- wazny_do DATETIME2 NOT NULL
- )
- CREATE TABLE Stanowisko
- (
- stanowisko_id INT IDENTITY(1,1) NOT NULL,
- nazwa VARCHAR(50) NOT NULL,
- wynagrodzenie NUMERIC (8) NOT NULL,
- wazny_od DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
- wazny_do DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
- PERIOD FOR SYSTEM_TIME (wazny_od, wazny_do),
- CONSTRAINT Stanowisko_PK PRIMARY KEY CLUSTERED(stanowisko_id)
- )
- WITH ( SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Stanowisko_Historyczna) )
- CREATE TABLE Pracownik_Historyczna
- (
- pracownik_id INT NOT NULL,
- imie VARCHAR(50) NOT NULL,
- nazwisko VARCHAR(50) NOT NULL,
- wypozyczalnia_id INT NOT NULL,
- stanowisko_id INT NOT NULL,
- wazny_od DATETIME2 NOT NULL,
- wazny_do DATETIME2 NOT NULL,
- )
- CREATE TABLE Pracownik
- (
- pracownik_id INT IDENTITY(1,1) NOT NULL,
- imie VARCHAR(50) NOT NULL,
- nazwisko VARCHAR(50) NOT NULL,
- wypozyczalnia_id INT NOT NULL,
- stanowisko_id INT NOT NULL,
- wazny_od DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
- wazny_do DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
- PERIOD FOR SYSTEM_TIME (wazny_od, wazny_do),
- CONSTRAINT Pracownik_PK PRIMARY KEY CLUSTERED (pracownik_id),
- CONSTRAINT Pracownik_Wypozyczalnia_FK FOREIGN KEY (wypozyczalnia_id) REFERENCES Wypozyczalnia (wypozyczalnia_id),
- CONSTRAINT Pracownik_Stanowisko_FK FOREIGN KEY (stanowisko_id) REFERENCES Stanowisko (stanowisko_id),
- )
- WITH ( SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Pracownik_Historyczna) )
- CREATE TABLE Samochod_Historyczna
- (
- samochod_id INT NOT NULL,
- marka VARCHAR(50) NOT NULL,
- model VARCHAR(50) NOT NULL,
- cena_za_dzien NUMERIC NOT NULL,
- wypozyczalnia_id INT NOT NULL,
- typ_samochodu_id INT NOT NULL,
- wazny_od DATETIME2 NOT NULL,
- wazny_do DATETIME2 NOT NULL,
- )
- CREATE TABLE Samochod
- (
- samochod_id INT IDENTITY(1,1) NOT NULL,
- marka VARCHAR(50) NOT NULL,
- model VARCHAR(50) NOT NULL,
- cena_za_dzien NUMERIC NOT NULL,
- wypozyczalnia_id INT NOT NULL,
- typ_samochodu_id INT NOT NULL,
- wazny_od DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
- wazny_do DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
- PERIOD FOR SYSTEM_TIME (wazny_od, wazny_do),
- CONSTRAINT Samochod_PK PRIMARY KEY CLUSTERED (samochod_id),
- CONSTRAINT Samochod_Wypozyczalnia_FK FOREIGN KEY (wypozyczalnia_id) REFERENCES Wypozyczalnia (wypozyczalnia_id),
- CONSTRAINT Samochod_TypSamochodu_FK FOREIGN KEY (typ_samochodu_id) REFERENCES TypSamochodu (typ_samochodu_id)
- )
- WITH ( SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Samochod_Historyczna) )
- -- DANE
- INSERT INTO Lokacja (nazwa) VALUES
- ('Warszawa')
- INSERT INTO Wypozyczalnia (nazwa, znizka_stalego_klienta, lokacja_id) VALUES
- ('Ursynów', 0.15, 1),
- ('Mokotów', 0.1, 1)
- INSERT INTO TypSamochodu(typ) VALUES
- ('SUV'),
- ('Hatchback')
- INSERT INTO Samochod(marka, model, cena_za_dzien, wypozyczalnia_id, typ_samochodu_id) VALUES
- ('Toyota', 'Yaris', 120, 1, 1),
- ('KIA', 'Sportage', 180, 1, 2),
- ('Toyota', 'Corolla', 140, 2, 1),
- ('Volvo', 'XC90', 200, 2, 2)
- INSERT INTO Stanowisko (nazwa, wynagrodzenie) VALUES
- ('Sprzedawca', 2000),
- ('Ksiegowy', 2500),
- ('Menedzer', 4000),
- ('Konserwator powierzchni płaskich', 2000)
- INSERT INTO Pracownik (imie, nazwisko, wypozyczalnia_id, stanowisko_id) VALUES
- ('Adam', 'Abacki', 1, 1),
- ('Bartosz', 'Babacki', 2, 3),
- ('Cecylia', 'Cabacka', 1, 2),
- ('Dariusz', 'Dadacki', 2, 4)
- GO
- INSERT INTO Pracownik (imie, nazwisko, wypozyczalnia_id, stanowisko_id) VALUES
- ('Grzegorz', 'Gabacki', 1, 1)
- -- TRIGGERS (atrybuty)
- CREATE TRIGGER placa_minimalna
- ON Stanowisko
- AFTER INSERT, UPDATE AS
- IF GETDATE() > '2018-05-22 06:28:00:000'
- BEGIN
- IF ((SELECT wynagrodzenie FROM inserted) < 2000)
- BEGIN
- PRINT 'Wynagrodzenie nie może byś mniejsze niż 2000 zł!'
- ROLLBACK
- END
- END
- CREATE TRIGGER liczba_pracownikow
- ON Pracownik
- AFTER INSERT, UPDATE AS
- IF GETDATE() > '2018-05-22 07:10:00:000'
- BEGIN
- IF ((SELECT COUNT(*) FROM Pracownik WHERE wypozyczalnia_id = (SELECT wypozyczalnia_id FROM inserted)) > 3)
- BEGIN
- DECLARE @Wypozyczalnia VARCHAR(50)
- SELECT @Wypozyczalnia = (SELECT Wypozyczalnia.nazwa
- FROM Wypozyczalnia WHERE Wypozyczalnia.wypozyczalnia_id = (SELECT wypozyczalnia_id FROM inserted))
- PRINT 'Wypożyczalnia ' + @Wypozyczalnia + ' posiada już maksymalną liczbę pracowników!'
- ROLLBACK
- END
- END
- INSERT INTO Stanowisko (nazwa, wynagrodzenie) VALUES
- ('Ochroniarz', 1800)
- UPDATE Stanowisko
- SET wynagrodzenie = 1800
- WHERE nazwa = 'Konserwator powierzchni płaskich';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement