рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдБрдЪ

рдпреЛрдЬрдирд╛ рд╕рдВрдЧрдгрдХ рд╕рдВрдЧрдгрдирд╛ рдореЗрдВ рд╕рдорд╕рд╛рдордпрд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдБ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИрдВ! рдорд╣рд╛рди рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рд╡рд░рдг рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рд╡рд░рдг рд╣реИрдВ рдЬреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЖрдзрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕рдорд╛рдирддрд╛ рдЕрдзрд┐рдХ рдЬреЛрдбрд╝рддреА рд╣реИред

рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рдХреЗ рдореБрджреНрджреЗ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордирд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рди рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВред рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреА рдорд╛рдВрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╡рд╛рд╕реНрддреБ рдкреИрдЯрд░реНрди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдРрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдорд╣рд╛рди рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдиреАрдЪреЗ рд╣рдо рдРрд╕реЗ рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА рдЙрди рддрдВрддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рди рдкрд░ рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдХрдерд╛ рдХрд╛ рдЪрд┐рддреНрд░рдг рдЬрд╛рд╡рд╛ рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдордЧреНрд░реА рднрд╛рд╖рд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд┐рд╖рдп рдХреЗ рдкреВрд░реНрдг рдХрд╡рд░реЗрдЬ рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рд╖рдп рд╕реЗ рдкрд░рд┐рдЪрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реИред

рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдкрд╣реБрдБрдЪ рдореБрджреНрджреЗ


рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓реЗрдЦрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рд╣реЛрд▓реНрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдорд╛рд▓ рдХреЗ рд╕рдВрддреБрд▓рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЪрд░реНрдЪрд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдареЛрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ PostgreSQL рдкрд░ рдЪрд▓ рд░рд╣реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдкреВрд░реНрддрд┐ рдХрд░реВрдБрдЧрд╛ред рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдЕрдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЯреЗрд╕реНрдЯ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рд╣реИред

CREATE TABLE stocks ( id integer PRIMARY KEY, name varchar(256) NOT NULL, quantity decimal(10,2) NOT NULL DEFAULT 0.0 ); CREATE TABLE documents ( id integer PRIMARY KEY, quantity decimal(10,2) NOT NULL DEFAULT 0.0, processed boolean NOT NULL DEFAULT false, stock integer REFERENCES stocks ); INSERT INTO stocks (id, name, quantity) VALUES (1, '', 56.4), (2, '', 26.8); INSERT INTO documents (id, quantity, stock) VALUES (1, 15.6, 1), (2, 26.1, 1); 

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЧреЛрджрд╛рдо рд╕реЗ рдорд╛рд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╢реЗрд╖, рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдПрдХ рдЖрд╡реЗрджрди рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИред

 SELECT quantity, processed, stock FROM documents WHERE id = 1; 

  quantity | processed | stock ----------+-----------+------- 15.60 | f | 1 

 SELECT name, quantity FROM stocks WHERE id = 1; 

  name | quantity ------+----------  | 56.40 

рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ 1 рдФрд░ рд╢реЗрд╖ рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢реЗрд╖ рдХрд╛ рдирдпрд╛ рдореВрд▓реНрдп 56.40 - 15.60 = 40.80 рд▓рд┐рдЦрдХрд░ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдереА рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдиреЛрдЯ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЛ рд╡рд╛рдкрд╕ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред

 UPDATE stocks SET quantity = 40.80 WHERE id = 1; UPDATE documents SET processed = true WHERE id = 1; 

рд▓реЗрдХрд┐рди рд╕рд┐рдВрдЧрд▓-рдпреВрдЬрд░ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рд▓рдВрдмрд╛ рдЕрддреАрдд рд╣реИред рдЕрдм рдРрд╕реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрдм рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддреЗ рд╣реИрдВред

рдкрд╣рд▓рд╛ рдЖрд╡реЗрджрди

 SELECT quantity, processed, stock FROM documents WHERE id = 1; 

  quantity | processed | stock ----------+-----------+------- 15.60 | f | 1 

 SELECT name, quantity FROM stocks WHERE id = 1; 

  name | quantity ------+----------  | 56.40 

рджреВрд╕рд░рд╛ рдЖрд╡реЗрджрди

 SELECT quantity, processed, stock FROM documents WHERE id = 2; 

  quantity | processed | stock ----------+-----------+------- 26.10 | f | 1 

 SELECT name, quantity FROM stocks WHERE id = 1; 

  name | quantity ------+----------  | 56.40 

рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ: рдкрд╣рд▓рд╛ рдЖрд╡реЗрджрди 56.40 - 15.60 = 40.80 рдФрд░ рджреВрд╕рд░рд╛ 56.40 - 26.10 = 30.30 рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдкрд░рд┐рдгрд╛рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдЕрджреНрдпрддрди рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдорд▓рд╛ рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдо рд░реАрдб-рд╕рдВрд╢реЛрдзрд┐рдд-рд░рд╛рдЗрдЯ рдХреЗ рддрд╣рдд рдПрдХ рд╕рдордЧреНрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИред

рдпрджрд┐ рд╣рдордиреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг (рд╕рдВрд╕рд╛рдзрд┐рдд рдХреНрд╖реЗрддреНрд░) рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЬрд╛рдБрдЪ рдХреА, рдФрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╡реЗрджрди рдореЗрдВ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рддреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЬрд╛рдБрдЪ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рджреЛ рдмрд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рддрд░рд╣ рдХрд╛ рдЪреЗрдХ-рддрдм-рдПрдХреНрдЯ рдСрдкрд░реЗрд╢рдиред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрджреНрдпрддрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд╕рдВрдЧрдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ, рдЕрд░реНрдерд╛рдд, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрд╣рд▓реЗ рд╣реА рдкреВрд░реА рд╣реЛ рдЪреБрдХреА рд╣реИ, рд▓реЗрдХрд┐рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╕рдмрд╕реЗ рдЖрдо рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЧрд▓рдд рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реИ рдЬреЛ рдкрдврд╝рдиреЗ-рдмрджрд▓рдиреЗ-рд▓рд┐рдЦрдиреЗ рдХреА рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдЕрджреНрдпрддрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреА рдЕрд╕рдВрдЧрдд рд╕реНрдерд┐рддрд┐ред

DBMS рддрдВрддреНрд░


рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрдВрдЬрдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рддрдВрддреНрд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ DBMS рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдпреЗ рддрдХрдиреАрдХреА рддрддреНрд╡ рд╣реИрдВ, рдЬрд┐рди рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдореБрдЦреНрдп рддрддреНрд╡ рд▓реЗрдирджреЗрди рдФрд░ рддрд╛рд▓реЗ рд╣реИрдВред рд╣рдо рдЖрдЧреЗ рдЙрдирдХреА рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

рд▓реЗрдирджреЗрди рдФрд░ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕реНрддрд░


рд▓реЗрди-рджреЗрди рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдПрдХ рдПрдХрд▓ рдЕрдиреБрдХреНрд░рдо рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдирджреЗрди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдпрд╛ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рдеред рдПрдХ рд▓реЗрди-рджреЗрди рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдзрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд░реЗрд╕рд┐рдВрдЧ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рднреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдкрд╣рд▓реА рдпрд╛ рджреЛрдиреЛрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдирджреЗрди рдХреА рдЙрдкрдпреБрдХреНрддрддрд╛ рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЕрд▓рдЧрд╛рд╡ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ / рдЬрдм рдПрдХ рдПрдХрд▓ рдСрдкрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдСрдкрд░реЗрд╢рди рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред

SQL рдорд╛рдирдХ рдЪрд╛рд░ рдЖрдЗрд╕реЛрд▓реЗрд╢рди рд╕реНрддрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ: рдмрд┐рдирд╛ рдкрдврд╝реЗ, рдкрдврд╝реЗ рдЧрдП, рджреЛрд╣рд░рд╛рдП рдЧрдП, рдкрдврд╝реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ, рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ред рдЗрди рд╕рднреА рдореЗрдВ рдЗрдиреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рдиреНрдпреВрдирддрдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрддрд░ рд╣реИред рдЗрди рд╕реНрддрд░реЛрдВ рдХреЗ рдореВрд▓ рдЧреБрдгреЛрдВ рдХреЛ рдирд╛рдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреАрдмреАрдПрдордПрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд▓рдЧрд╛рд╡ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдХрдареЛрд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PostgreSQL рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрддрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: рдкреНрд░рддрд┐рдмрджреНрдз рдФрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкрдврд╝реЗрдВред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд░реАрдб рдХрд┐рдП рдЧрдП рдЖрдЗрд╕реЛрд▓реЗрд╢рди рд▓реЗрд╡рд▓ (PostgreSQL рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рдпреБрдХреНрдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрдЧрдд рдбреЗрдЯрд╛ рд╕реНрдерд┐рддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдирджреЗрди рдХреЗ рднреАрддрд░ рдХрд┐рдП рдЧрдП рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╡рд░реНрддрдорд╛рди рдПрдХ рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

 BEGIN; SELECT quantity, processed, stock FROM documents WHERE id = 1; SELECT name, quantity FROM stocks WHERE id = 1; --    UPDATE stocks SET quantity = 40.80 WHERE id = 1; UPDATE documents SET processed = true WHERE id = 1; COMMIT; 

рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЗрдирджреЗрди рд╕реЗ рдкрд░рд┐рдЪрд╛рд▓рди рдХреЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЕрд▓рдЧрд╛рд╡ рдХрд╛ рдПрдХ рдФрд░ рд╕реНрддрд░, рд╕реАрд░рд┐рдпрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп, рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рдВрднрд╡ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдирд╣реАрдВ рд╣реИред PostgreSQL рдореЗрдВ Serializable рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред рдпрд╣реА рд╣реИ, рдПрдХ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рд╕рднреА рд▓реЗрдирджреЗрди рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд▓реЗрди-рджреЗрди рдХрд░рддреЗ рд╕рдордп, рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рдПрдХ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдпрджрд┐ рдбреЗрдЯрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд▓реЗрдирджреЗрди рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рд▓реЗрдирджреЗрди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

 BEGIN ISOLATION LEVEL SERIALIZABLE; SELECT quantity, processed, stock FROM documents WHERE id = 1; SELECT name, quantity FROM stocks WHERE id = 1; --    UPDATE stocks SET quantity = 40.80 WHERE id = 1; UPDATE documents SET processed = true WHERE id = 1; COMMIT; 

рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдирджреЗрди рд░реЗрд╕рд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рдФрд░ рдбреЗрдЯрд╛ рд╕реНрдерд┐рд░рддрд╛ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдирджреЗрди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рд▓реЗрди-рджреЗрди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрддрд╛ рд╣реИред рдФрд░ рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд▓реЗрдирджреЗрди рдХреЗ рд╕рдлрд▓ рд╣реЛрдиреЗ рддрдХ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЧрдгрдирд╛рдУрдВ рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдпрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рдмрдбрд╝реЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рднрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрддреЛрд╖рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЖрд╢рд╛рд╡рд╛рджреА рд╕рдВрдЧрд░реЛрдз рдирд┐рдпрдВрддреНрд░рдг рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рдзрд╛рд░рдгрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ рдХрд┐ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗрд╡рд▓ рднрдВрдбрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдирджреЗрди рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдЙрдирдХреА рд▓рдВрдмрд╛рдИ рд╣реИред рд▓реЗрди-рджреЗрди рдмрд╣реБрдд рд▓рдВрдмрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡реЗ рдЬрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдЙрддрдирд╛ рд╣реА рдЕрдзрд┐рдХ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣реЛрдЧрд╛ред рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдЙрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬреЛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрд╡рд░реБрджреНрдз


рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЙрдХ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрд╛рд▓реЗ рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред DBMSs рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдХрд┐рдВрдЧ рдореИрдХреЗрдирд┐рдЬреНрдо рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП PostgreSQL рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рддрдВрддреНрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

PostgreSQL рдХрдИ рддрд░рд╣ рдХреЗ рддрд╛рд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреА рдореБрдЦреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╛рд▓реЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХрд╛рд░ рдХрд╛ рд▓реЙрдХ рдЯрдХрд░рд╛рд╡ рдХрд░рддрд╛ рд╣реИред рд╕рдВрдШрд░реНрд╖ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд▓реЙрдХ рдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЙрдХ рдХреЗ рд╕рд╛рде рдХреИрдкреНрдЪрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддрд╛рд▓реЗ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред рд╕реНрдкрд╖реНрдЯ рддрд╛рд▓реЗ рд╡реЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдпрд╛ рд╢реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд▓реЙрдХ рдХреАрд╡рд░реНрдб рдФрд░ рдХреНрд╡реЗрд░реА рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡реЗрд░реА рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдирд┐рд╣рд┐рдд рддрд╛рд▓реЗ рд╡реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рджреМрд░рд╛рди рдХреИрдкреНрдЪрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЪрдпрди, рдЕрджреНрдпрддрди, рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ, рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреНрдп)ред PostgerSQL рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЙрдХ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд▓рд╛рд╣рдХрд╛рд░ рд▓реЙрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рд▓реЗрдирджреЗрди рдХреЗ рдЕрдВрдд рддрдХ рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рд╕реЗ рддрд╛рд▓реЗ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдХрд╛рд▓реНрдкрдирд┐рдХ рд▓реЗрдЦрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рд╕реНрдЯреЙрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкрдВрдХреНрддрд┐ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд▓реЙрдХ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдЬрд┐рд╕рдХреЗ рд╢реЗрд╖ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкрдВрдХреНрддрд┐ рдкрд░, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд▓реЗрдирджреЗрди рдХреА рдЗрд╕ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред

 BEGIN; SELECT quantity, processed, stock FROM documents WHERE id = 1 FOR UPDATE; SELECT name, quantity FROM stocks WHERE id = 1 FOR UPDATE; --    UPDATE stocks SET quantity = 40.80 WHERE id = 1; UPDATE documents SET processed = true WHERE id = 1; COMMIT; 

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдФрд░ рд╕реНрдЯреЙрдХ рдЯреЗрдмрд▓ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рддрд╛рд▓реЗ рд▓рдЧрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рдЪреБрдирд┐рдВрджрд╛ рдбреЗрдЯрд╛ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдЕрд╡рд░реЛрдзрди рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдкреВрд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╡рд╛рд▓реЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдХреЗрд╡рд▓ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпреЗ рдХрд╛рдлреА рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЙрд▓ рдХреНрд░рдордмрджреНрдз рд╣реИрдВред

рдЬрдм рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЙрдХ рдХрд┐рдП рдЧрдП рдХреНрд╖реЗрддреНрд░ рдкрд░ рд▓реЙрдХ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓реЙрдХ рдЬрд╛рд░реА рд╣реЛрдиреЗ рддрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрд╡рд░реБрджреНрдз (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЧрддрд┐рд░реЛрдз рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдЕрд╡рд░реБрджреНрдз рдЕрдиреБрд░реЛрдз рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд╛рд▓ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╛ рд▓реЙрдХ (Nowait) рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреА рдЕрд╕рдВрднрд╡рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддреБрд░рдВрдд рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░


рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рдпрдВрддреНрд░рдг рд╡рд╣ рдирд┐рдпрдо рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реВрддреНрд░ рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рдХреНрд╖реНрдп рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдЬрд▓реНрджреА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рдпрдВрддреНрд░рдг рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЗ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИ: рдЖрд╢рд╛рд╡рд╛рджреА (рдЖрд╢рд╛рд╡рд╛рджреА), рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА (рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА) рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЖрд╢рд╛рд╡рд╛рджреА (рдЕрд░реНрдз-рдЖрд╢рд╛рд╡рд╛рджреА)ред

рдЖрд╢рд╛рд╡рд╛рджреА рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдШрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрджрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╡рд╣ рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдбреЗрдЯрд╛ рдХреЗ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП рд╣реИрдВ, рддреЛ рдХреЛрдИ рд╕рдВрдШрд░реНрд╖ рдирд╣реАрдВ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдкрд░реАрдд рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рд╕рдВрдШрд░реНрд╖ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╛ рддреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдордирд╛ рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрд╢рд╛рд╡рд╛рджреА рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдШрд░реНрд╖ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣реА рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдзрд╛рдЧреЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХреНрд╖реЗрддреНрд░ рдкрд░ рдХреНрд░рдордмрджреНрдз рд╣реИрдВред рдпрд╣ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЖрд╢рд╛рд╡рд╛рджреА рдПрдХ рдорд┐рд╢реНрд░рд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рд╕рд╛рде рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред

рд╡рд╛рд╕реНрддреБ рдкреИрдЯрд░реНрди


рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдкрд╛рдардХ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдЕрднрд┐рдЧрдо рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DBMS рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЦрдВрдб рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдкреИрдЯрд░реНрди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рдПрдХ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдФрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦ рдХреЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

DBMS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдбреЗрдЯрд╛ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдпрд╛ рдЙрдирдХреЗ рдКрдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдмрдЪрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕рдордп рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ рд╣реИ, рдбреЗрдЯрд╛ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд░реНрдорд┐рдд рдФрд░ рд╣рдЯрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдмреЗрд╢рдХ, рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ: рд╕рд┐рд╕реНрдЯрдо рд▓реЗрдирджреЗрди рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд╣реБрдВрдЪ рдХреЗ рджреМрд░рд╛рди рд╕рдВрдШрд░реНрд╖ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗрди-рджреЗрди рдХреЗ рджреМрд░рд╛рди рддрд╛рд▓реЗ рд▓рдЧреЗ рд░рд╣рддреЗ рд╣реИрдВ; рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрдИ рдЫреЛрдЯреЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ, рдЬреЛ рдЕрдкреНрд░рднрд╛рд╡реА рднреА рд╣реИред рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдп рдкреИрдЯрд░реНрди рдХреА рдЗрдХрд╛рдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдкреИрдЯрд░реНрди рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рд╕рдореЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

 public class UnitOfWork { private List<DomainObject> newObjects; private List<DomainObject> updatedObjects; private List<DomainObject> deletedObjects; /** *   * @return     */ public DomainObject create() { DomainObject domainObject = new DomainObject(); newObjects.add(domainObject); return domainObject; } /** *     * @param domainObject   */ public void update(DomainObject domainObject) { updatedObjects.add(domainObject); } /** *     * @param domainObject   */ public void remove(DomainObject domainObject) { deletedObjects.add(domainObject); } /** *      */ public void commit() { // SQL     INSERT insert(newObjects); // SQL     UPDATE udpate(updatedObjects); // SQL     DELETE delete(deletedObjects); } //  insert, update, delete   } 

рдКрдкрд░ рдпреВрдирд┐рдЯ рдСрдлрд╝ рд╡рд░реНрдХ рдкреИрдЯрд░реНрди рдХрд╛ рд╕рд░рд▓рддрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред DomainObjects рдПрдХ UnitOfWork рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЙрди рдкрд░ рдЙрдЪрд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИред рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд▓реЗрди-рджреЗрди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдиреБрдкреНрд░рдпреЛрдЧ UnitOfWork рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХрдорд┐рдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рд╡реНрдпрд╡рд╕рд╛рдп рд▓реЗрдирджреЗрди рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдХрдИ рд╕рд┐рд╕реНрдЯрдо рд▓реЗрдирджреЗрди рддрдХ рдлреИрд▓реА рд╣реБрдИ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рд▓рдВрдмреЗ рд▓реЙрдХ рдХреИрдкреНрдЪрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдХрдИ рд╕рд┐рд╕реНрдЯрдо рд▓реЗрдирджреЗрди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ DBMS рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рддрдВрддреНрд░ рдХреЗрд╡рд▓ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рд▓реЗрдирджреЗрди рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдЖрд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдФрд░ рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдкреИрдЯрд░реНрди рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрд╢рд╛рд╡рд╛рджреА рдФрд░ рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдкрд╛рджрди рдлрд╝реЙрд░реНрдо рдЦреЛрд▓рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рдХрдИ рдорд┐рдирдЯреЛрдВ рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдмрдЪрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡реНрдпрд╛рдкрд╛рд░ рд▓реЗрдирджреЗрди рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рдЖрд╢рд╛рд╡рд╛рджреА рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрджрд┐ рд╕рдВрдкрд╛рджрди рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рдХрд┐рд╕реА рд╡рд┐рд░реЛрдз рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрджрд▓реЗ рд╣реБрдП рдбреЗрдЯрд╛ рдФрд░ рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдСрдкреНрдЯрд┐рдорд┐рд╕реНрдЯрд┐рдХ рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдкреИрдЯрд░реНрди рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдирд┐рдпрдВрддреНрд░рдг рддрдВрддреНрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд рдбреЗрдЯрд╛ рддрдВрддреНрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЬрдм рднреА рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЧрдП рдереЗред рдпрджрд┐ рдпреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдмрдЪ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдПрдХ рд╕рдВрдШрд░реНрд╖ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдпрд╛ рддреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рджреЛрд╣рд░рд╛рдХрд░ рдпрд╛ рд░рджреНрдж рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 public class DomainObject { private Integer id; private Integer version; private Object data; //   } public class UnitOfWork { // ,   public void update(List<DomainObject> updatedObjects) throws SQLException { PreparedStatement ps = connection.prepareStatement( "update domain_objects set data = ?, version = version + 1 " + "where id = ? and version = ?" ); for (DomainObject domainObject: updatedObjects) { ps.setObject(1, domainObject.getData()); ps.setInt(2, domainObject.getId()); ps.setInt(3, domainObject.getVersion()); if (ps.executeUpdate() == 0) { throw new RuntimeException(" "); } } } } 

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЖрд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рднреА рд░рд┐рдХреЙрд░реНрдб рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЕрдкрд╡рд╛рдж рдПрдХ рд╕рдВрдШрд░реНрд╖ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдзрд╛рдЧреЗ рджреНрд╡рд╛рд░рд╛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдСрдлрд╝рд▓рд╛рдЗрди рд▓реЙрдХ рдкреИрдЯрд░реНрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

 class DomainObject { private Integer id; private Boolean blocked; private Object data; //   } public class UnitOfWork { // ,   public void update(List<DomainObject> updatedObjects) throws SQLException { PreparedStatement updateStatement = connection.prepareStatement( "update domain_objects set data = ?, blocked = false " + "where id = ? and blocked = true" ); for (DomainObject domainObject: updatedObjects) { updateStatement.setObject(1, domainObject.getData()); updateStatement.setInt(2, domainObject.getId()); updateStatement.executeUpdate(); } } public DomainObject get(Integer id) throws SQLException { PreparedStatement updateStatement = connection.prepareStatement( "update domain_objects set blocked = true " + "where id = ? and blocked = false" ); updateStatement.setInt(1, id); if (updateStatement.executeUpdate() == 1) { PreparedStatement selectStatement = connection.prepareStatement( "select * from domain_objects where id = ?" ); selectStatement.setInt(1, id); ResultSet result = selectStatement.executeQuery(); //result    //  DomainObject    result return new DomainObject(); } else { throw new RuntimeException("  "); } } } 

рдкреНрд░рд╕реНрддреБрдд рдХреЛрдб рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп, рдЕрд╡рд░реЛрдзрд┐рдд рдлрд╝реАрд▓реНрдб рдкрд░ рдПрдХ рд▓реЙрдХ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЗрдЯ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓реЙрдХ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓реЗрди-рджреЗрди рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рднреА рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдмрд╢рд░реНрддреЗ рдХрд┐ рддрд╛рд▓реЗ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкреНрд░рд╕реНрддреБрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗрд╡рд▓ рд╡рд┐рд╡рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИрдВ!

рд╡реНрдпрд╛рдкрд╛рд░ рд╕реНрддрд░ рддрд╛рд▓рд╛рдмрдВрджреА рдиреАрддрд┐


рдЕрд╡рд░реЛрдзрдХ рдиреАрддрд┐рдпрд╛рдВ рдРрд╕реЗ рдирд┐рдпрдо рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рддрдХ рд╕рдорд╡рд░реНрддреА рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕реНрддрд░ рдкрд░ рддрд╛рд▓реЗ рдХреА рдиреАрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рди рдХрд┐ рдбреАрдмреАрдПрдордПрд╕ рдФрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдореИрдХреЗрдирд┐рдЬреНрдо рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕реНрддрд░ рдкрд░ред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рд▓реЙрдХ рдкреЙрд▓рд┐рд╕реА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЖрдк рдкреНрд░рд╢реНрди рдХреЛ рдмрд╛рдж рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдПрдХреНрд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЫреЛрдбрд╝ рд╕рдХрддреЗредрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЧреБрдВрдЬрд╛рдЗрд╢ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЬреНрдЮрд╛рди рд╣реЛред рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдХреНрд╖реЗрддреНрд░ рдХреА рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рддрдВрддреНрд░ рдХреА рдорджрдж рд╕реЗ, рдЖрд╡реЗрджрди рдореЗрдВ рд╡реНрдпрд╡рд╕рд╛рдп рд╕реНрддрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХрдИ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╕рдорд░реНрдерди рдЬрдЯрд┐рд▓ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреАрдмреАрдПрдордПрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдлреА рдЖрдо рд╣реИред рджреВрд╕рд░реЗ, рдПрдХ рд▓рдВрдмреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓реЗрди-рджреЗрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЖрдк рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░ рд▓реЗрдирджреЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рд▓реЗрдирджреЗрди рдХреЛ рдЦреБрд▓рд╛ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛ рдХреНрд╖реЗрддреНрд░ рдЖрд╡реЗрджрди рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдирд┐рд╣рд┐рдд рд╣реИредрдЗрд╕рд▓рд┐рдП, рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд▓реЗрди-рджреЗрди рдореЗрдВ рд▓реЙрдХ рдкреЙрд▓рд┐рд╕реА рдХреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрд░реЛрдд


рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рдПрдкреНрд▓реАрдХреЗрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдкреИрдЯрд░реНрди (рдорд╛рд░реНрдЯрд┐рди рдлрд╛рдЙрд▓рд░, рдбреЗрд╡рд┐рдб рд░рд╛рдЗрд╕, рдореИрдереНрдпреВ рдлреЗрдордореЗрд▓, рдПрдбрд╡рд░реНрдб рд╣реАреЗрдЯ, рд░реЙрдмрд░реНрдЯ рдореА, рд░реИрдВрдбреА рд╕реНрдЯреИрдлреЛрд░реНрдб)
рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕реАрдХреНрдпреВрд╕реА рдХреЙрдирдПрд░реЗрдмрд┐рд▓рд┐рдЯреА рдХрдВрдЯреНрд░реЛрд▓ рдХрдВрд╕реАрд▓рд░
рдХрдВрдЯреНрд░реЛрд▓
рдЖрдЗрд╕реЛрд▓реЗрд╢рди рд▓реЗрд╡рд▓

Source: https://habr.com/ru/post/In121858/


All Articles