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

PostgreSQL
рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдЫрджреНрдо рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд "рдСрдЯреЛ-рдЗрдиреНрдХреНрд░реАрдореЗрдВрдЯ" рдлрд╝реАрд▓реНрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реНрдорд╛рд▓рд╕реЗрд░рд┐рдпрд▓, рд╕реАрд░рд┐рдпрд▓ рдФрд░ рдмрд┐рдЧрд╕реЗрд░рд┐рдпрд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рдХреБрдЫ рдбреАрдмреАрдПрдордПрд╕ рдореЗрдВ AUTO_INCREMENT рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рдорд╛рди) рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдг рд╣реИрдВред
рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпрд╣ рдХреНрд╖реЗрддреНрд░ рдФрд░
SEQUENCE рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП DEFAULT рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓рд┐рдВрдХрд┐рдВрдЧ рд╣реИред рдФрд░ рдХрднреА-рдХрднреА рдореИрдВ рдЗрди рдореВрд▓реНрдпреЛрдВ рдкрд░ рдЧреМрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдЙрдиреНрд╣реЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ ред
рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ:
currval
рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдореЗрдВ рдЗрд╕ рдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдЕрдЧрд▓реА рдХреЙрд▓ рд╕реЗ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ ред (рдпрджрд┐ рдЕрдЧрд▓реЗ рд╕рддреНрд░ рдХреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕рддреНрд░ рдореЗрдВ рджрд┐рдП рдЧрдП рдЕрдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдХрднреА рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИред) рдЪреВрдВрдХрд┐ рдпрд╣ рдорд╛рди рд╕рддреНрд░ рдХреЗ рджрд╛рдпрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЕрдЧрд▓рд╛ рд╕рддреНрд░ рдЕрдиреНрдп рд╕рддреНрд░реЛрдВ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛ рдпрд╛ рдирд╣реАрдВред
Pg_fterences рд╕рд┐рд╕реНрдЯрдо рджреГрд╢реНрдпPostgreSQL 10 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░,
pg_fterences рд╕рд┐рд╕реНрдЯрдо
рджреГрд╢реНрдп рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ , рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд┐рдирд╛ рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдХреЗ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИред
рдЖрдЗрдП рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдлрд┐рд░ рднреА рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
CREATE TABLE tst( id serial
TABLE tst;
id | val -------- 1 | 1 2 | 2 3 | 4 4 | 8
рдпрд╣ рд╡рд╣
id = 4
рдорд╛рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдиреЗ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдпрд╣ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ:
DELETE FROM tst WHERE id > 2;
id | val -------- 1 | 1 2 | 2
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдиреБрд░реВрдк рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдирд╛рдо рдкрддрд╛ рдХрд░реЗрдВрдЧреЗ:
SELECT pg_get_serial_sequence('tst', 'id');
pg_get_serial_sequence ---------------------- public.tst_id_seq
рдЕрдм рдХреНрд╡реЗрд░реА рдореЗрдВ
рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА
рдЕрдиреБрдХреНрд░рдо рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
SELECT * FROM public.tst_id_seq;
last_value | log_cnt | is_called -------------------------------- 4 | 29 | t
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ,
last_value рдлрд╝реАрд▓реНрдб рдмрд╣реБрдд "рдЕрдВрддрд┐рдо" рдорд╛рди рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдиреБрдХреНрд░рдо рд╣рдорд╛рд░реЗ рдХреЙрд▓ рдХреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред
рдЕрдм рдЖрдЗрдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрдиреБрдХреНрд░рдо рдорд╛рди рдХреЛ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдмрдирд╛рдПрдВ
рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрджрд┐ рд╕реНрд░реЛрдд рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдЧрд╛!