Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.72 KB | None | 0 0
  1. CREATE TABLE Lokacja
  2. (
  3. lokacja_id INT IDENTITY(1,1) NOT NULL,
  4. nazwa VARCHAR(50) NOT NULL,
  5.  
  6. CONSTRAINT Lokacja_PK PRIMARY KEY CLUSTERED (lokacja_id)
  7. )
  8.  
  9. CREATE TABLE TypSamochodu
  10. (
  11. typ_samochodu_id INT IDENTITY(1,1) NOT NULL,
  12. typ VARCHAR(50) NOT NULL,
  13.  
  14. CONSTRAINT TypSamochodu_PK PRIMARY KEY CLUSTERED (typ_samochodu_id)
  15. )
  16.  
  17.  
  18. CREATE TABLE Wypozyczalnia_Historyczna
  19. (
  20. wypozyczalnia_id INT NOT NULL,
  21. nazwa VARCHAR(50) NOT NULL,
  22. znizka_stalego_klienta NUMERIC(3,2) NOT NULL,
  23. lokacja_id INT NOT NULL,
  24.  
  25. wazny_od DATETIME2 NOT NULL,
  26. wazny_do DATETIME2 NOT NULL,
  27. )
  28.  
  29. CREATE TABLE Wypozyczalnia
  30. (
  31. wypozyczalnia_id INT IDENTITY(1,1) NOT NULL,
  32. nazwa VARCHAR(50) NOT NULL,
  33. znizka_stalego_klienta NUMERIC(3,2) NOT NULL,
  34. lokacja_id INT NOT NULL,
  35.  
  36. wazny_od DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
  37. wazny_do DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
  38. PERIOD FOR SYSTEM_TIME (wazny_od, wazny_do),
  39.  
  40. CONSTRAINT Wypozyczalnia_PK PRIMARY KEY CLUSTERED(wypozyczalnia_id),
  41. CONSTRAINT Wypozyczalnia_Lokacja_FK FOREIGN KEY (lokacja_id) REFERENCES Lokacja (lokacja_id)
  42. )
  43. WITH ( SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Wypozyczalnia_Historyczna) )
  44.  
  45.  
  46. CREATE TABLE Stanowisko_Historyczna
  47. (
  48. stanowisko_id INT NOT NULL,
  49. nazwa VARCHAR(50) NOT NULL,
  50. wynagrodzenie NUMERIC (8) NOT NULL,
  51. wazny_od DATETIME2 NOT NULL,
  52. wazny_do DATETIME2 NOT NULL
  53. )
  54.  
  55.  
  56. CREATE TABLE Stanowisko
  57. (
  58. stanowisko_id INT IDENTITY(1,1) NOT NULL,
  59. nazwa VARCHAR(50) NOT NULL,
  60. wynagrodzenie NUMERIC (8) NOT NULL,
  61.  
  62. wazny_od DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
  63. wazny_do DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
  64. PERIOD FOR SYSTEM_TIME (wazny_od, wazny_do),
  65.  
  66. CONSTRAINT Stanowisko_PK PRIMARY KEY CLUSTERED(stanowisko_id)
  67. )
  68. WITH ( SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Stanowisko_Historyczna) )
  69.  
  70.  
  71.  
  72. CREATE TABLE Pracownik_Historyczna
  73. (
  74. pracownik_id INT NOT NULL,
  75. imie VARCHAR(50) NOT NULL,
  76. nazwisko VARCHAR(50) NOT NULL,
  77. wypozyczalnia_id INT NOT NULL,
  78. stanowisko_id INT NOT NULL,
  79.  
  80. wazny_od DATETIME2 NOT NULL,
  81. wazny_do DATETIME2 NOT NULL,
  82. )
  83.  
  84. CREATE TABLE Pracownik
  85. (
  86. pracownik_id INT IDENTITY(1,1) NOT NULL,
  87. imie VARCHAR(50) NOT NULL,
  88. nazwisko VARCHAR(50) NOT NULL,
  89. wypozyczalnia_id INT NOT NULL,
  90. stanowisko_id INT NOT NULL,
  91.  
  92. wazny_od DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
  93. wazny_do DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
  94. PERIOD FOR SYSTEM_TIME (wazny_od, wazny_do),
  95.  
  96. CONSTRAINT Pracownik_PK PRIMARY KEY CLUSTERED (pracownik_id),
  97. CONSTRAINT Pracownik_Wypozyczalnia_FK FOREIGN KEY (wypozyczalnia_id) REFERENCES Wypozyczalnia (wypozyczalnia_id),
  98. CONSTRAINT Pracownik_Stanowisko_FK FOREIGN KEY (stanowisko_id) REFERENCES Stanowisko (stanowisko_id),
  99. )
  100. WITH ( SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Pracownik_Historyczna) )
  101.  
  102.  
  103. CREATE TABLE Samochod_Historyczna
  104. (
  105. samochod_id INT NOT NULL,
  106. marka VARCHAR(50) NOT NULL,
  107. model VARCHAR(50) NOT NULL,
  108. cena_za_dzien NUMERIC NOT NULL,
  109. wypozyczalnia_id INT NOT NULL,
  110. typ_samochodu_id INT NOT NULL,
  111. wazny_od DATETIME2 NOT NULL,
  112. wazny_do DATETIME2 NOT NULL,
  113. )
  114.  
  115. CREATE TABLE Samochod
  116. (
  117. samochod_id INT IDENTITY(1,1) NOT NULL,
  118. marka VARCHAR(50) NOT NULL,
  119. model VARCHAR(50) NOT NULL,
  120. cena_za_dzien NUMERIC NOT NULL,
  121. wypozyczalnia_id INT NOT NULL,
  122. typ_samochodu_id INT NOT NULL,
  123.  
  124. wazny_od DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
  125. wazny_do DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
  126. PERIOD FOR SYSTEM_TIME (wazny_od, wazny_do),
  127.  
  128. CONSTRAINT Samochod_PK PRIMARY KEY CLUSTERED (samochod_id),
  129. CONSTRAINT Samochod_Wypozyczalnia_FK FOREIGN KEY (wypozyczalnia_id) REFERENCES Wypozyczalnia (wypozyczalnia_id),
  130. CONSTRAINT Samochod_TypSamochodu_FK FOREIGN KEY (typ_samochodu_id) REFERENCES TypSamochodu (typ_samochodu_id)
  131. )
  132. WITH ( SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Samochod_Historyczna) )
  133.  
  134.  
  135.  
  136.  
  137. -- DANE
  138.  
  139. INSERT INTO Lokacja (nazwa) VALUES
  140. ('Warszawa')
  141.  
  142. INSERT INTO Wypozyczalnia (nazwa, znizka_stalego_klienta, lokacja_id) VALUES
  143. ('Ursynów', 0.15, 1),
  144. ('Mokotów', 0.1, 1)
  145.  
  146. INSERT INTO TypSamochodu(typ) VALUES
  147. ('SUV'),
  148. ('Hatchback')
  149.  
  150. INSERT INTO Samochod(marka, model, cena_za_dzien, wypozyczalnia_id, typ_samochodu_id) VALUES
  151. ('Toyota', 'Yaris', 120, 1, 1),
  152. ('KIA', 'Sportage', 180, 1, 2),
  153. ('Toyota', 'Corolla', 140, 2, 1),
  154. ('Volvo', 'XC90', 200, 2, 2)
  155.  
  156. INSERT INTO Stanowisko (nazwa, wynagrodzenie) VALUES
  157. ('Sprzedawca', 2000),
  158. ('Ksiegowy', 2500),
  159. ('Menedzer', 4000),
  160. ('Konserwator powierzchni płaskich', 2000)
  161.  
  162. INSERT INTO Pracownik (imie, nazwisko, wypozyczalnia_id, stanowisko_id) VALUES
  163. ('Adam', 'Abacki', 1, 1),
  164. ('Bartosz', 'Babacki', 2, 3),
  165. ('Cecylia', 'Cabacka', 1, 2),
  166. ('Dariusz', 'Dadacki', 2, 4)
  167. GO
  168.  
  169. INSERT INTO Pracownik (imie, nazwisko, wypozyczalnia_id, stanowisko_id) VALUES
  170. ('Grzegorz', 'Gabacki', 1, 1)
  171.  
  172. -- TRIGGERS (atrybuty)
  173.  
  174. CREATE TRIGGER placa_minimalna
  175. ON Stanowisko
  176. AFTER INSERT, UPDATE AS
  177. IF GETDATE() > '2018-05-22 06:28:00:000'
  178. BEGIN
  179.     IF ((SELECT wynagrodzenie FROM inserted) < 2000)
  180.     BEGIN
  181.         PRINT 'Wynagrodzenie nie może byś mniejsze niż 2000 zł!'
  182.         ROLLBACK
  183.     END
  184. END
  185.  
  186.  
  187. CREATE TRIGGER liczba_pracownikow
  188. ON Pracownik
  189. AFTER INSERT, UPDATE AS
  190. IF GETDATE() > '2018-05-22 07:10:00:000'
  191. BEGIN
  192.     IF ((SELECT COUNT(*) FROM Pracownik WHERE wypozyczalnia_id = (SELECT wypozyczalnia_id FROM inserted)) > 3)
  193.     BEGIN
  194.         DECLARE @Wypozyczalnia VARCHAR(50)
  195.         SELECT @Wypozyczalnia = (SELECT Wypozyczalnia.nazwa
  196.             FROM Wypozyczalnia WHERE Wypozyczalnia.wypozyczalnia_id = (SELECT wypozyczalnia_id FROM inserted))
  197.         PRINT 'Wypożyczalnia '  + @Wypozyczalnia + ' posiada już maksymalną liczbę pracowników!'
  198.         ROLLBACK
  199.     END
  200. END
  201.  
  202. INSERT INTO Stanowisko (nazwa, wynagrodzenie) VALUES
  203. ('Ochroniarz', 1800)
  204.  
  205. UPDATE Stanowisko
  206. SET wynagrodzenie = 1800
  207. WHERE nazwa = 'Konserwator powierzchni płaskich';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement