Advertisement
JouJoy

MainCreateTable

Dec 14th, 2021
1,397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.97 KB | None | 0 0
  1. use IlnurKurs
  2.  
  3. go
  4.  
  5. DROP TABLE Uchet
  6. DROP TABLE Inventory
  7. DROP TABLE Sklad
  8. go
  9. CREATE TABLE Sklad
  10. (
  11.     number_of_sklad int identity,
  12.     otvetstvenny nvarchar(30) NOT NULL,
  13.     constraint PK_numb_of_sklad primary key(number_of_sklad)
  14. );
  15. go
  16.  
  17. CREATE TABLE Inventory
  18. (
  19.     number_of_sklad int identity,
  20.     kod_mat int,
  21.     ed_izm nvarchar(10) constraint DF_izm default 'sht',
  22.     kolvo_na_sklade int,
  23.     data_last_op date,
  24.     constraint PK_numbnumb_sklmat primary key(number_of_sklad, kod_mat)
  25. );
  26. go
  27. CREATE TABLE Uchet
  28. (
  29.     number_of_sklad int,
  30.     number_doc int,
  31.     number_dog int,
  32.     kod_mat int,
  33.     ed_izm nvarchar(10) constraint DF_izm1 default 'sht',
  34.     kolvo_mat int constraint CK_kolvo check(kolvo_mat>=0),
  35.     date_of_post date,
  36.     constraint PK_numbnumb_skldoc primary key(number_of_sklad, number_doc),
  37.     constraint FK_numb_sklad_uch foreign key (number_of_sklad) references Sklad (number_of_sklad) on delete cascade on update cascade,
  38.     constraint FK_numb_inv_skl_uch foreign key (number_of_sklad,kod_mat) references Inventory (number_of_sklad,kod_mat)
  39. );
  40. go
  41. delete from Uchet;
  42. delete from Inventory;
  43. delete from Sklad;
  44. go
  45.  
  46. set identity_insert Sklad on;
  47. insert into Sklad(number_of_sklad,otvetstvenny)
  48. values
  49. (1,'Ivanov'),
  50. (2,'Petrov'),
  51. (3,'Sidorov'),
  52. (4,'Rakushkin'),
  53. (5,'Zavhozoff'),
  54. (6,'Malishev');
  55.  
  56. set identity_insert Sklad off;
  57. go
  58. set identity_insert Inventory on;
  59. insert into Inventory(number_of_sklad,kod_mat,ed_izm,kolvo_na_sklade,data_last_op)
  60. values
  61. (1,1,'ed',432,'2021-04-12'),
  62. (2,1,'ed',500,'2019-05-23'),
  63. (3,5,'ed',789,'2020-08-07'),
  64. (3,8,'ed',122,'2018-09-01'),
  65. (5,2,'ed',1000,'2021-09-05'),
  66. (5,7,'ed',325,'2020-03-19');
  67. set identity_insert Inventory off;
  68. go
  69. --set identity_insert Uchet on;
  70. insert into Uchet(number_of_sklad,number_doc,number_dog,kod_mat,ed_izm,kolvo_mat,date_of_post)
  71. values
  72. (1,172434,190,1,'ed',22,'2021-04-12'),
  73. (2,172234,190,1,'ed',22,'2020-07-14'),
  74. (3,3934,190,5,'ed',22,'2012-03-12'),
  75. (3,93434,190,8,'ed',22,'2018-01-12'),
  76. (5,02434,190,2,'ed',22,'2019-09-21'),
  77. (5,12434,190,7,'ed',22,'2020-10-17');
  78. --set identity_insert Uchet off;
  79. go
  80. CREATE TRIGGER Deleting on Inventory
  81. instead of delete
  82. as
  83. begin
  84.     delete from Uchet
  85.     where number_of_sklad in (select number_of_sklad from deleted) and kod_mat in (select kod_mat from deleted)
  86.     delete from Uchet
  87.     where number_of_sklad in (select number_of_sklad from deleted) and kod_mat in (select kod_mat from deleted)
  88. end
  89.  
  90. go
  91. Create TRIGGER UPD_Inventory ON Inventory
  92. AFTER UPDATE
  93. AS
  94. BEGIN
  95.  
  96.     update Uchet
  97.     set kolvo_mat = kolvo_mat-((select kolvo_na_sklade from deleted
  98.                                             where number_of_sklad in (select number_of_sklad from inserted)
  99.                                                 and kod_mat in (select kod_mat from inserted))
  100.     - (select kolvo_na_sklade from inserted
  101.                                             where number_of_sklad in (select number_of_sklad from inserted)
  102.                                                 and kod_mat in (select kod_mat from inserted)))
  103.     where number_of_sklad in (select number_of_sklad from inserted) and kod_mat in (select kod_mat from inserted)
  104.  
  105.  
  106. END
  107.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement