Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. drop table inwards;
  2. drop table sales;
  3. drop table products_on_stocks;
  4. drop table products;
  5. drop table stocks;
  6. drop sequence seq_inward_id;
  7.  
  8.  
  9. create table products(
  10. id int constraint product_id_pk primary key,
  11. name varchar2(20) constraint product_name_notnull not null,
  12. ean int constraint product_ean_notnull not null constraint product_ean_uniq unique,
  13. price int constraint product_price_notnull not null,
  14. vat number(3,2) constraint product_vat_notnull not null
  15. );
  16.  
  17. create table stocks(
  18. id int constraint stock_id_pk primary key,
  19. name varchar2(20) constraint stock_name_notnull not null,
  20. address varchar2(20)
  21. );
  22.  
  23. create table products_on_stocks(
  24. id int constraint pos_id_pk primary key,
  25. product_id int constraint pos_product_id_fk references products(id),
  26. stock_id int constraint pos_stock_id_fk references stocks(id),
  27. quantity int constraint pos_quantity_notnull not null
  28. );
  29.  
  30. create table sales(
  31. id int constraint ps_id_pk primary key,
  32. product_id int constraint ps_product_id_fk references products(id),
  33. stock_id int constraint ps_stock_id_fk references stocks(id),
  34. sale_date date default sysdate constraint sale_date_notnull not null,
  35. quantity int constraint sale_quantity_notnull not null
  36. );
  37.  
  38. create table inwards(
  39. id int constraint pi_id_pk primary key,
  40. product_id int constraint pi_product_id_fk references products(id),
  41. stock_id int constraint pi_stock_id_fk references stocks(id),
  42. inward_date date default sysdate constraint inward_date_not_null not null,
  43. quantity int constraint inward_quantity_notnull not null
  44. );
  45.  
  46. CREATE SEQUENCE seq_inward_id;
  47.  
  48.  
  49. CREATE OR REPLACE TRIGGER watch_sales_minimum INSTEAD OF UPDATE ON products_on_stocks FOR EACH ROWl
  50. DECLARE
  51. BEGIN
  52. update products_on_stocks set quantity=1 where 1;
  53.  
  54. END;
  55. /
  56.  
  57.  
  58.  
  59. CREATE OR REPLACE TRIGGER inwards_sales_trigger AFTER INSERT OR UPDATE ON products_on_stocks FOR EACH ROW
  60. DECLARE
  61. BEGIN
  62. IF inserting THEN
  63. insert into inwards values(seq_inward_id.nextval, :new.product_id, :new.stock_id, sysdate, :new.quantity);
  64. END IF;
  65.  
  66. IF updating THEN
  67.  
  68. IF :new.quantity > :old.quantity THEN
  69. insert into inwards values(seq_inward_id.nextval, :new.product_id, :new.stock_id, sysdate, :new.quantity-:old.quantity);
  70. END IF;
  71.  
  72. IF :new.quantity < :old.quantity THEN
  73. insert into sales values(seq_inward_id.nextval, :new.product_id, :new.stock_id, sysdate, :old.quantity-:new.quantity);
  74. END IF;
  75.  
  76. END IF;
  77. END;
  78. /
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85. insert into products values(3, 'Mlieko', 435654356, 27, 0.20);
  86. insert into products values(4, 'Nohavice', 12345643, 350, 0.20);
  87. insert into products values(5, 'Kanon', 4365345536, 12000, 0.20);
  88. insert into products values(6, 'Karbo-bruska', 8765765, 6584, 0.20);
  89. insert into products values(7, 'Umele sladidlo', 345423216, 12.5, 0.20);
  90. insert into products values(32, 'Slivovica', 97865424, 150, 0.30);
  91. insert into products values(56, 'Notebook', 34577435, 14444, 0.20);
  92. insert into products values(43, 'Penazenka', 23457432, 540, 0.19);
  93. insert into products values(57, 'Zaclony', 324565, 589, 0.20);
  94.  
  95. insert into stocks values(1, 'Komarov', 'Komarov 12');
  96. insert into stocks values(2, 'Velodrom', 'Udolni 25');
  97. insert into stocks values(3, 'Poprad', 'Nabrezna 28');
  98. insert into stocks values(6, 'FI MUNI', 'Botanicka 34');
  99.  
  100. insert into products_on_stocks values(1, 3, 3, 100);
  101. insert into products_on_stocks values(2, 4, 2, 96);
  102. insert into products_on_stocks values(3, 4, 1, 47);
  103. insert into products_on_stocks values(4, 3, 6, 80);
  104. insert into products_on_stocks values(5, 7, 3, 16);
  105. insert into products_on_stocks values(6, 32, 2, 150);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement