Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 5.38 KB | None | 0 0
  1. /* CREATE TABLE Dzial (
  2. id_dzialu int identity
  3. constraint pk_dzial primary key,
  4. nazwa nvarchar(20) not null,
  5. );
  6. CREATE TABLE Stanowisko (
  7. id_stanowiska int identity
  8. constraint pk_stanowisko primary key,
  9. id_dzialu int not null constraint
  10. fk_stanowisko_dzial foreign key references Dzial(id_dzialu),
  11. nazwa nvarchar(20) not null,
  12. pensja money not null
  13. );
  14. CREATE TABLE Pracownik (
  15. id_pracownika int identity
  16. constraint pk_pracownik primary key,
  17. id_stanowiska int not null constraint
  18. fk_pracownik_stanowisko foreign key references Stanowisko(id_stanowiska),
  19. imie nvarchar(20) not null,
  20. nazwisko nvarchar(20) not null,
  21. telefon nvarchar(9) not null,
  22. miasto nvarchar(20) not null,
  23. pesel nvarchar(11) not null
  24. );
  25. CREATE TABLE Zamowienie (
  26. id_zamowienia int identity
  27. constraint pk_zamowienie primary key,
  28. nazwa_zamowienia nvarchar(20) not null,
  29. start_zamowienia DATETIME DEFAULT getdate() not null,
  30. koniec_zamowienia DATE
  31. );
  32. CREATE TABLE Pracownik_zamowienie (
  33. id_pracownik_zamowienie int identity
  34. constraint pk_pracownik_zamowienie primary key,
  35. id_pracownika int not null constraint
  36. fk_pracownik_zamowienie_pracownik foreign key
  37. references Pracownik(id_pracownika),
  38. id_zamowienie int not null constraint
  39. fk_pracownik_zamowienie_zamowienie foreign key
  40. references Zamowienie(id_zamowienia)
  41. );
  42. CREATE TABLE Klient (
  43. id_klienta int identity
  44. constraint pk_klient primary key,
  45. imie nvarchar(20),
  46. nazwisko nvarchar(20),
  47. adres nvarchar(20),
  48. nip nvarchar(20) not null,
  49. );
  50. CREATE TABLE Klient_zamowienie(
  51. id_klient_zamowienie int identity
  52. constraint pk_klient_zamowienie primary key,
  53. id_klienta int not null constraint
  54. fk_klient_zamowienie_klient foreign key
  55. references Klient(id_klienta),
  56. id_zamowienia int not null constraint
  57. fk_klient_zamowienie_zamowienie foreign key
  58. references Zamowienie(id_zamowienia)
  59. );
  60. CREATE PROCEDURE Dzial_dodajDzial ( @nazwa_dzialu nvarchar(20) )
  61. AS
  62. INSERT INTO Dzial(nazwa)
  63. VALUES (@nazwa_dzialu)
  64. GO
  65. CREATE PROCEDURE Stanowisko_dodajStanowisko ( @nazwa_dzialu nvarchar(20), @nazwa_stanowiska nvarchar(20), @pensja money )
  66. AS
  67. DECLARE @id_dzialu int;
  68. SELECT @id_dzialu = d.id_dzialu
  69. FROM Dzial d
  70. WHERE d.nazwa = @nazwa_dzialu
  71. INSERT INTO Stanowisko(id_dzialu, pensja, nazwa)
  72. VALUES(@id_dzialu, @pensja, @nazwa_dzialu)
  73. GO
  74. CREATE PROCEDURE Pracownik_dodajPracownika ( @id_stanowiska int, @imie nvarchar(20), @nazwisko nvarchar(20), @telefon nvarchar(9), @miasto nvarchar(20), @pesel nvarchar(11) )
  75. AS
  76. INSERT INTO Pracownik
  77. VALUES(@id_stanowiska, @imie, @nazwisko, @telefon, @miasto, @pesel)
  78. CREATE PROCEDURE Zamowienie_dodajZamowienie ( @nazwa_zamowienia nvarchar(20) )
  79. AS
  80. INSERT INTO Zamowienie(nazwa_zamowienia)
  81. VALUES(@nazwa_zamowienia)
  82. GO
  83. CREATE PROCEDURE Pracownik_zamowienie_przypiszZamowienie ( @pesel nvarchar(11), @nazwa_zamowienia nvarchar(20) )
  84. AS
  85. DECLARE @id_pracownika int;
  86. DECLARE @id_zamowienia int;
  87. SELECT @id_pracownika = p.id_pracownika
  88. FROM Pracownik p
  89. WHERE p.pesel = @pesel
  90. SELECT @id_zamowienia = z.id_zamowienia
  91. FROM Zamowienie z
  92. WHERE z.nazwa_zamowienia = @nazwa_zamowienia
  93. INSERT INTO Pracownik_zamowienie(id_pracownika, id_zamowienie)
  94. VALUES (@id_pracownika, @id_zamowienia)
  95. GO
  96. CREATE PROCEDURE Klient_dodajKlienta ( @imie nvarchar(20), @nazwisko nvarchar(20), @adres nvarchar(20), @nip nvarchar(20))
  97. AS
  98. INSERT INTO Klient
  99. VALUES(@imie, @nazwisko, @adres, @nip)
  100. GO
  101. CREATE PROCEDURE Klient_zamowienie_przypiszZamowienie ( @nip nvarchar(20), @nazwa_zamowienia nvarchar(20) )
  102. AS
  103. DECLARE @id_klienta int;
  104. DECLARE @id_zamowienia int;
  105. SELECT @id_klienta = k.id_klienta
  106. FROM Klient k
  107. WHERE k.nip = @nip
  108. SELECT @id_zamowienia = z.id_zamowienia
  109. FROM Zamowienie z
  110. WHERE z.nazwa_zamowienia = @nazwa_zamowienia
  111. INSERT INTO Klient_zamowienie (id_klienta, id_zamowienia)
  112. VALUES(@id_klienta, @id_zamowienia)
  113. GO
  114.  
  115. create TRIGGER Pracownik_sprawdzPracownika ON Pracownik
  116. FOR INSERT
  117. AS
  118. IF EXISTS(SELECT 1 FROM Pracownik p
  119. JOIN inserted i on i.pesel = p.pesel
  120. WHERE p.pesel = i.pesel)
  121. BEGIN
  122. print 'nie mozna dodac pracownika, pracownik z takim peselem juz istnieje!'
  123. ROLLBACK TRAN
  124. END
  125. GO
  126. */
  127. CREATE TRIGGER Pracownik_sprawdzKlienta ON Klient
  128. FOR INSERT
  129. AS
  130.     IF EXISTS(SELECT 1
  131.             FROM Klient k
  132.             JOIN inserted i on i.nip = k.nip
  133.             WHERE i.nip = k.nip)
  134.     BEGIN
  135.         print 'nie mozna dodac klienta,klient z takim nipem juz istenieje!'
  136.         ROLLBACK TRAN
  137.     END
  138.    
  139.     IF EXISTS(SELECT 1
  140.             FROM inserted i
  141.             WHERE LEN(i.NIP) < 10
  142.             )
  143.     BEGIN
  144.         print 'Podano za krotki nip'
  145.         ROLLBACK TRAN
  146.     END
  147.            
  148. GO
  149.  
  150. CREATE TRIGGER Stanowisko_sprawdzPensje ON Stanowisko
  151. FOR INSERT, UPDATE
  152. AS
  153.     IF EXISTS(SELECT 1
  154.             FROM inserted i
  155.             WHERE i.pensja < 0)
  156.     BEGIN
  157.         print 'nie mozna wstawic nowej pensji, ponieważ jest ujemna!'
  158.         ROLLBACK TRAN
  159.     END
  160. GO
  161.  
  162. CREATE TRIGGER Zamowienie_spradzKoniecZamowienia on Zamowienie
  163. FOR UPDATE
  164. AS
  165.     IF EXISTS(SELECT 1
  166.             FROM inserted i
  167.             JOIN deleted d on d.start_zamowienia = i.start_zamowienia
  168.             WHERE d.koniec_zamowienia IS NOT NULL)
  169.     BEGIN
  170.         print 'Zamowienie to zostalo zakonczone wczesniej, nie mozna zamienic daty!'
  171.         ROLLBACK TRAN
  172.     END
  173. GO
  174.  
  175. CREATE TRIGGER Klient_usunKlienta on Klient
  176. FOR DELETE
  177. AS
  178.     IF EXISTS(SELECT 1
  179.             FROM deleted d
  180.             JOIN Klient_zamowienie kz on kz.id_klienta = d.id_klienta
  181.             JOIN Zamowienie z on z.id_zamowienia = kz.id_zamowienia
  182.             WHERE z.koniec_zamowienia IS NOT NULL)
  183.     BEGIN
  184.         print 'Klient posiada realizowane zamówienia,nie można go usunąć!'
  185.         ROLLBACK TRAN
  186.     END
  187. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement