Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.18 KB | None | 0 0
  1. Kavos shopas
  2. Ateina ateina psichai kurie nori zalios kavos (kava veganams)
  3. uzpila, parduoda kilogramais, priima uzsakymus, turi kavos aparata (pora rusiu kavos)
  4. kovos rusis
  5. pardavimai
  6. uzsakymai
  7.  
  8. CREATE TABLE pardavimai (
  9. pardavimai_id INTEGER NOT NULL,
  10. data DATE,
  11. kavos_rusis_id INT NOT NULL,
  12. kiekis FLOAT NOT NULL,
  13. kaina FLOAT NOT NULL,
  14. PRIMARY KEY (pardavimai_id, kavos_rusis_id)
  15. );
  16.  
  17. INSERT INTO pardavimai (pardavimai_id, data, kavos_rusis_id, kiekis, kaina) VALUES
  18. (1,'09.10.2018', 1, '1', '1.90'),
  19. (2,'09.10.2018', 1, '2', '3.80'),
  20. (3,'09.10.2018', 4, '1', '2.90'),
  21. (4,'09.10.2018', 4, '1', '2.90'),
  22. (5,'09.10.2018', 7, '1', '2.50'),
  23. (6,'09.10.2018', 5, '1', '1.90'),
  24. (7,'09.10.2018', 4, '1', '2.90'),
  25. (8,'09.10.2018', 4, '1', '2.90'),
  26. (9,'09.10.2018', 7, '1', '2.50'),
  27. (10,'09.10.2018', 1, '2', '3.80'),
  28. (11,'09.10.2018', 4, '1', '2.90'),
  29. (12,'09.10.2018', 4, '1', '2.90'),
  30. (13,'09.10.2018', 7, '1', '2.50'),
  31. (14,'09.10.2018', 5, '1', '1.90'),
  32. (15,'09.10.2018', 4, '1', '2.90');
  33.  
  34. CREATE TABLE kavos_rusis (
  35. kavos_rusis_id serial PRIMARY KEY,
  36. kavos_pavadinimas VARCHAR(40) NOT NULL,
  37. kg FLOAT NOT NULL,
  38. kaina FLOAT NOT NULL
  39. );
  40.  
  41. INSERT INTO kavos_rusis (kavos_pavadinimas, kg, kaina) VALUES
  42. ('Espresso', '0.020', '1.60'),
  43. ('Espresso', '0.040', '2.40'),
  44. ('Kapucinas', '0.030', '1.90'),
  45. ('Kapucinas', '0.050', '2.90'),
  46. ('Latte', '0.040', '1.90'),
  47. ('Latte', '0.060', '2.90'),
  48. ('Chailatte', '0.050', '2.50');
  49.  
  50. CREATE TABLE uzsakymai (
  51. uzsakymai_id INTEGER NOT NULL,
  52. data DATE,
  53. padalinys_id INT,
  54. uzsakymo_pavadinimas VARCHAR(50) NOT NULL,
  55. gavejas VARCHAR(50) NOT NULL,
  56. gavimo_data DATE,
  57. kaina FLOAT,
  58. PRIMARY KEY (uzsakymai_id, padalinys_id)
  59. );
  60.  
  61.  
  62. CREATE TABLE padalinys_id (
  63. padalinys_id serial PRIMARY KEY,
  64. padalinio_pavadinimas VARCHAR(50)
  65. );
  66.  
  67. INSERT INTO padalinys_id (padalinio_pavadinimas) VALUES ('Akropolis'), ('Europa'), ('GO9');
  68.  
  69. CREATE TABLE grazinimas (
  70. grazinimas_id serial PRIMARY KEY,
  71. data DATE,
  72. kavos_rusis_id INT,
  73. kiekis FLOAT NOT NULL,
  74. kaina FLOAT NOT NULL
  75. );
  76.  
  77. INSERT INTO grazinimas (data, kavos_rusis_id, kiekis, kaina) VALUES
  78. ('09.10.2018', '4', '0.050', '2.90');
  79.  
  80.  
  81. CREATE TABLE darbuotojai (
  82. darbuotojai_id INTEGER,
  83. vardas VARCHAR(50) NOT NULL,
  84. pavarde VARCHAR(50) NOT NULL,
  85. padalinys_id VARCHAR(50),
  86. pareigos_id VARCHAR(50),
  87. PRIMARY KEY (darbuotojai_id, padalinys_id, pareigos_id)
  88. );
  89.  
  90. INSERT INTO darbuotojai (vardas, pavarde, padalinys_id, pareigos_id) VALUES
  91. ('Beata', 'Volodkevic', 1,1),
  92. ('Snezana', 'Bukovski', 1,1),
  93. ('Rasa', 'Matinauskaite',1,3);
  94. INSERT INTO darbuotojai (vardas, pavarde, padalinys_id, pareigos_id)
  95. VALUES ('Beata', 'Sadovska', 2,1),
  96. ('Agota Ute', 'Litkeviciute', 2,2),
  97. ('Evelina', 'Raugaite', 2,3);
  98. INSERT INTO darbuotojai (vardas, pavarde, padalinys_id, pareigos_id) VALUES
  99. ('Greta', 'Tugusi',3,1),
  100. ('Diana', 'Kazakevic', 3,2),
  101. ('Svetlana', 'Mucin',3,3);
  102.  
  103. CREATE TABLE pareigos_id (
  104. pareigos_id serial PRIMARY KEY,
  105. pareigos_pavadinimas VARCHAR(50) NOT NULL
  106. );
  107.  
  108. INSERT INTO pareigos_id (pareigos_pavadinimas) VALUES ('pardaveja'), ('vyr.pardaveja'), ('direktore');
  109.  
  110.  
  111.  
  112.  
  113. CREATE INDEX darbuotojai_index ON darbuotojai (darbuotojai_id, vardas, pavarde, padalinys_id, pareigos_id);
  114. CREATE INDEX grazinimas_index ON grazinimas (grazinimas_id, data, kavos_rusis_id, kiekis, kaina);
  115.  
  116.  
  117. Yra kelios lenteles view,
  118. visos lenteles turi ideksus
  119.  
  120. ALTER TABLE grazinimas ADD CONSTRAINT kaina_check CHECK(kaina>0 AND kaina BETWEEN 1 AND 10); - grazinimas -> properties -> constrains -> chech
  121.  
  122.  
  123. Trigeris vartojamas su konkreciais lenteles duomenimus, kai yra keiciamas ar irasomas naujas irasas. Trigerius naudojame kartu su INSERT, UPDATE, DELETE.
  124.  
  125. Kada trigeris veikia? - Po, per arba pries INSERT, UPDATE, DELETE sakinio dalimis.
  126. Kaip kuriami trigeriai?
  127.  
  128. Trigeriai kuriami sakiniu CREATE TRIGGER, kuriame nurodoma
  129.  
  130. Trigerio kvietimo momentas
  131. Trigerio kvietimo daþnis
  132. Trigerio kamienas (aprasomi vienas arba keli sakiniai)
  133. Trigerio kamieno vykdymo sàlyga
  134.  
  135. CREATE TRIGGER Modifikuoti Nr AFTER UPDATE OF Nr ON Vykdytojai REFERENDING OLD AS SeniVykdytojai NEW AS NaujiVikdytojai FOR EACH ROW MODE DB
  136.  
  137.  
  138. CREATE TRIGGER Products_INSERT
  139. BEFORE UPDATE
  140. ON Products
  141. AFTER INSERT
  142. AS
  143. INSERT INTO History (ProductId, Operation)
  144. SELECT Id, 'product added' + ProductName + 'Company' + Manufacturer
  145. FROM INSERTED;
  146.  
  147. *TRIG*
  148.  
  149. CREATE TABLE employees(
  150. id int4 primary key,
  151. first_name varchar(40) NOT NULL,
  152. last_name varchar(40) NOT NULL
  153. );
  154.  
  155. CREATE TABLE employee_audits(
  156. int int4 primary key,
  157. employee_id int4 NOT NULL,
  158. last_name varchar(40) NOT NULL,
  159. changed_on timestamp(6) NOT NULL
  160. )
  161.  
  162. CREATE OR REPLACE FUNCTION log_last_name_changes()
  163. RETURNS trigger AS
  164. $BODY$
  165. BEGIN
  166. IF NEW.last_name <> OLD.last_name THEN
  167. INSERT INTO employee_audits(employee_id,last_name,changed_on)
  168. VALUES(OLD.id,OLD.last_name,now());
  169. END IF;
  170.  
  171. RETURN NEW;
  172. END;
  173. $BODY$
  174. LANGUAGE plpgsql;
  175.  
  176. CREATE TRIGGER last_name_changes
  177. BEFORE UPDATE
  178. ON employees
  179. FOR EACH ROW
  180. EXECUTE PROCEDURE log_last_name_changes();
  181.  
  182. CREATE OR REPLACE FUNCTION befo_insert() RETURNS trigger
  183. AS $$
  184. BEGIN
  185. NEW.FIRST_NAME = LTRIM(NEW.FIRST_NAME);
  186. NEW.LAST_NAME = LTRIM(NEW.LAST_NAME);
  187. NEW.JOB_ID = UPPER(NEW.JOB_ID); RETURN NEW;
  188. END; $$
  189.  
  190. LANGUAGE plpgsql;
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221. CREATE FUNCTION trigger_function() RETURN trigger AS
  222.  
  223. CREATE TABLE darbuotoju_auditas (
  224. id int4 PRIMARY KEY,
  225. darbuotojo_id int4 NOT NULL,
  226. last_name VARCHAR(40) NOT NULL,
  227. changed_on timestamp(6) NOT NULL
  228. )
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257. CREATE TABLE darbuotojai_audits (
  258. id int4 primary key,
  259. darbutojai_id int4 NOT NULL,
  260. vardas VARCHAR(40) NOT NULL,
  261. changed_on timestamp(6) NOT NULL
  262. )
  263.  
  264.  
  265. CREATE OR REPLACE FUNCTION log_last_name_changes()
  266. RETURNS trigger AS
  267. $BODY$
  268. BEGIN
  269. IF NEW.vardas <> OLD.vardas THEN
  270. INSERT INTO darbuotojai_audits(darbuotojai_id, vardas, changed_on)
  271. VALUES(OLD.darbuotojai_id, OLD.vardas, now());
  272. END IF;
  273.  
  274. RETURN NEW;
  275. END;
  276. $BODY$
  277.  
  278. LANGUAGE plpgsql;
  279.  
  280. CREATE TRIGGER last_name_changes
  281. BEFORE UPDATE
  282. ON darbuotojai
  283. FOR EACH ROW
  284. EXECUTE PROCEDURE log_last_name_changes();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement