рдПрдХ рдЕрд╡рд╕рд░ рдЬреЛ рдХрд┐ Oracle, DB2, PostgreSQL рдФрд░ рдХрдИ рдЕрдиреНрдп рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдЬрдХрд▓ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЕрдВрддрддрдГ MS SQL рд╕рд░реНрд╡рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИред рдЕрдиреБрдХреНрд░рдо рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ!
рдЕрдиреБрдХреНрд░рдо - рдкрд╣рдЪрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреБрдХреНрд░рдо рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ рдФрд░ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред
SQL Server 2008 рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рджреЛ рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдирд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рдСрдЯреЛ-рдЗрдиреНрдХреНрд░рд┐рдореЗрдВрдЯрд┐рдВрдЧ рд╣реЛрдЧрд╛ред
Create Table WithOutSequence1 ( EmpId int identity not null primary key ,EmpName varchar(50) not null ) Insert into WithOutSequence1 Select 'Violet' Union All Select 'Tape' Select * from WithOutSequence1
рдЗрд╕реА рддрд░рд╣, рдПрдХ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВред
Create Table WithOutSequence2 ( EmpId int identity not null primary key ,EmpName varchar(50) not null ) Insert into WithOutSequence2 Select 'Violet' Union All Select 'Tape' Select * from WithOutSequence2
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдорд╛рдиреЛрдВ рдХреЛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рднрд░рд╛ рд╣реИред рд╣рдо рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдорд╛рди рдХрд┐рд╕реА рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдк рд╕реАрдХреНрд╡реЗрдВрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдХреИрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
CREATE SEQUENCE [schema_name . ] sequence_name [ AS { built_in_integer_type | user-defined_integer_type } ] | START WITH <constant> | INCREMENT BY <constant> | { MINVALUE <constant> | NO MINVALUE } | { MAXVALUE <constant> | NO MAXVALUE } | { CYCLE | NO CYCLE } | { CACHE [<constant> ] | NO CACHE }
рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рдмрдирд╛рдПрдБ:
IF EXISTS (SELECT * FROM sys.sequences WHERE NAME = N'GenerateNumberSequence' AND TYPE='SO') DROP Sequence GenerateNumberSequence GO SET ANSI_NULLS ON GO CREATE SEQUENCE GenerateNumberSequence START WITH 1 INCREMENT BY 1; GO
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ, рдЕрдиреБрдХреНрд░рдо рдиреЛрдб рдореЗрдВ рдЖрдк рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ рдЯреЗрдмрд▓ рдмрдирд╛рдиреЗ рдФрд░ рднрд░рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
Create Table WithSequence1 ( EmpId int not null primary key ,EmpName varchar(50) not null ); Insert into WithSequence1(EmpId, EmpName) VALUES (NEXT VALUE FOR GenerateNumberSequence, 'Violet'), (NEXT VALUE FOR GenerateNumberSequence, 'Tape') SELECT * FROM WithSequence1;
рдпрджрд┐ рдЖрдк рдПрдХ рд╣реА рдирд╕ рдореЗрдВ рджреВрд╕рд░реА рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдлрд┐рд░ рд╕реЗ
GenerateNumberSequence рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдВрдб-рдЯреВ-рдПрдВрдб рдирдВрдмрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Create Table WithSequence2 ( EmpId int not null primary key ,EmpName varchar(50) not null ); Insert into WithSequence2(EmpId, EmpName) VALUES (NEXT VALUE FOR GenerateNumberSequence, 'Violet'), (NEXT VALUE FOR GenerateNumberSequence, 'Tape') SELECT * FROM WithSequence2;
рдЕрдиреБрдХреНрд░рдо (рдЕрдиреБрдХреНрд░рдо) рдЬреЛ рд╣рдордиреЗ рдмрдирд╛рдпрд╛ рд╣реИ рд╡рд╣
sys рд╕рд┐рд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
ред рдХреНрд░рдо ред
SELECT Name ,Object_ID ,Type ,Type_Desc ,Start_Value ,Increment ,Minimum_Value ,Maximum_Value ,Current_Value ,Is_Exhausted FROM sys.sequences

рдпрд╣ рдЕрдиреБрдХреНрд░рдо рдкрд░ рдЙрдкрд▓рдмреНрдз рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рд╣рдореЗрдВ рдмрд╕ рдмрд╛рдж рдореЗрдВ рдЗрди рд╕реНрддрдВрднреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рд░ рдирд╛рдореЛрдВ рдХреЛ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рд╕реЗ рдмрджрд▓реЗрдВред Is_Exerateed рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдиреБрдХреНрд░рдо рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
- рдЗрдВрдЯ
- sMALLINT
- tinyint
- bigint
- рджрд╢рдорд▓рд╡
- рд╕рдВрдЦреНрдпрд╛рддреНрдордХ
рдЕрдиреБрдХреНрд░рдо рдХреЛ рдПрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЖрдк рдШреЛрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рднреАрддрд░ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ -2147483648 рд╕реЗ 2147483647 рддрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд▓рд┐рдП рдмреАрдЬ рдХреЛ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп SQL рд╕рд░реНрд╡рд░ рдХреНрдпрд╛ рдХрд╣реЗрдЧрд╛, рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдЪрд▓реЛ рдмрд╛рдИрдВ рд╕реАрдорд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
CREATE SEQUENCE GenerateNumberSequence START WITH -2147483649
рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ 'START With' рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдорд╛рдиреНрдп рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛редрдЬреИрд╕реА рдХреА рдЙрдореНрдореАрдж рдереАред рдЕрдм рдЪрд▓реЛ рд╕рд╣реА рд╕реАрдорд╛ рддреЛрдбрд╝реЛред
CREATE SEQUENCE GenerateNumberSequence START WITH 2147483647
рд╕рд░реНрд╡рд░ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреЗрдЧрд╛:
рдЕрдиреБрдХреНрд░рдо рдСрдмреНрдЬреЗрдХреНрдЯ 'GenerateNumberSequence' рдХреИрд╢ рдЖрдХрд╛рд░ рдЙрдкрд▓рдмреНрдз рдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ; рд╢реЗрд╖ рдЕрдиреБрдХреНрд░рдо рдорд╛рдиреЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдЖрдХрд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдФрд░ рдпрджрд┐ рд╣рдо s_ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ Is_Exerateed рдХреЙрд▓рдо рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдорд╛рди 1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЬреЛ рд╣рдореЗрдВ рдЗрд╕ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдЖрдЧреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрд╕рдВрднрд╡рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп, рд╕рд░реНрд╡рд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗрдЧрд╛:
рдЕрдиреБрдХреНрд░рдо рдСрдмреНрдЬреЗрдХреНрдЯ 'GenerateNumberSequence' рдЕрдкрдиреЗ рдиреНрдпреВрдирддрдо рдпрд╛ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИред рдирдП рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВредрдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрдорд╛рдг рдХреЗ
рд╕рд╛рде RESTART рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
ALTER SEQUENCE dbo.GenerateNumberSequence RESTART WITH 1;
рдореВрд▓реНрдп рдШреЛрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдорд╛рдиреНрдп рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд▓рд╛, рдЕрдиреБрдХреНрд░рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЕрдЧрд▓реЗ рдирд╣реАрдВред
рдпрд╛рдиреА рдЕрдЧрд░ рд╕реЗрдЯ:
ALTER SEQUENCE dbo.GenerateNumberSequence RESTART WITH 10;
рдФрд░ рдлрд┐рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
Insert into WithSequence1(EmpId, EmpName) VALUES (NEXT VALUE FOR GenerateNumberSequence, 'violet'), (NEXT VALUE FOR GenerateNumberSequence, 'tape') SELECT * FROM WithSequence1;
рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
EmpId EmpName
рд╕реЗрдЯрдкреЙрдЗрдВрдЯ рд╕реЗ рд╕реАрдХреНрд╡реЗрдВрд╕ рд╢реБрд░реВ рд╣реБрдЖред
рдЖрдк
sys рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
ред рдХреНрд░рдо ред
MIN рдФрд░ MAX рдорд╛рди
рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрд╡реАрдХрд╛рд░реНрдп рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдиреАрдЪреЗ рдРрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
CREATE SEQUENCE GenerateNumberSequence START WITH 1 INCREMENT BY 1 MINVALUE 10 MAXVALUE 20
рдиреНрдпреВрдирддрдо рдорд╛рди 10 рд╣реИ, рдЕрдзрд┐рдХрддрдо 20 рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдХреЛ рдПрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдВрджреЗрд╢ рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реЛрдВрдЧреЗ:
рдЕрдиреБрдХреНрд░рдо рдСрдмреНрдЬреЗрдХреНрдЯ 'GenerateNumberSequence' рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрдн рдорд╛рди рдЕрдиреБрдХреНрд░рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдХреЗ рдмреАрдЪ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдЕрдЧрд▓рд╛ рдорд╛рди рд╕реАрдорд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
рдЕрдиреБрдХреНрд░рдо рдСрдмреНрдЬреЗрдХреНрдЯ 'GenerateNumberSequence' рдЕрдкрдиреЗ рдиреНрдпреВрдирддрдо рдпрд╛ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИред рдирдП рдорд╛рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВредрд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
- рд╕реЗрд╡рд╛ рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХреЗ рд╕рд╛рде рдкреБрдирд░рд╛рд░рдВрдн рдпрд╛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред
- CYCLE рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
CYCLE рд╡рд┐рдХрд▓реНрдк
рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрдХреНрд░рдо рдХреЛ рд▓реВрдк рдХрд░рддрд╛ рд╣реИ рдФрд░, рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИ, рдЕрдиреБрдХреНрд░рдо рдиреНрдпреВрдирддрдо рд╕реЗ рдЬрд╛рд░реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
CREATE SEQUENCE GenerateNumberSequence START WITH 20 INCREMENT BY 1 MINVALUE 10 MAXVALUE 20 CYCLE
рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдВрдЧреЗ:
EmpId EmpName
рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
Insert into WithSequence1(EmpId, EmpName) VALUES (NEXT VALUE FOR GenerateNumberSequence, 'Violet'), (NEXT VALUE FOR GenerateNumberSequence, 'Tape') SELECT * FROM WithSequence1;
рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдорд┐рд╢реНрд░рд┐рдд рдереАрдВред рдпрджрд┐ рд╣рдордиреЗ рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рддреЛ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реЛрдЧрд╛
EmpId EmpName
рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рджреВрд╕рд░рд╛ рд░рд┐рдХреЙрд░реНрдб рд╡реИрдз рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛ рдХреЛ рдкрд╛рд░ рдХрд░ рдЧрдпрд╛, рд╕рдВрдЦреНрдпрд╛ рдЕрдиреБрдХреНрд░рдо (10) рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЧрдИред рдпрджрд┐ рдЖрдк рдЕрдм sysред рдкрд░рд┐рдгрд╛рдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдорд╛рди 10 рд╣реИред
рдЕрдЧрд▓реА рдмрд╛рд░, рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЖрдмрд╛рджреА рдЗрд╕ рддрд░рд╣ рд╣реЛ рд╕рдХрддреА рд╣реИ:
EmpId EmpName
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЕрдиреБрдХреНрд░рдо рдЙрд╕ рдХреНрд░рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЪреВрдВрдХрд┐ "рд╡рд╛рдпрд▓реЗрдЯ" "рдЯреЗрдк" рд╕реЗ рдкрд╣рд▓реЗ рдЖрддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕рдВрдЦреНрдпрд╛ 10 рд╣реИ, рд░рд┐рдХреЙрд░реНрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛:
Next_value = Current_value + Shift рдЕрд░реНрдерд╛рдд 10 +1 "рд╡рд╛рдпрд▓реЗрдЯ" рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рдЕрдиреБрдХреНрд░рдо = 11 рдХрд╛ рдорд╛рди рдФрд░ рджреВрд╕рд░реЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдорд╛рди рд╕рдорд╛рди рд╕реВрддреНрд░ рдХреЗ рдмрд╛рдж 12 рд╣реЛрдЧрд╛ред
рдХреЛрдИ CYCLE рд╡рд┐рдХрд▓реНрдк
рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдорд╛рдирд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрдиреБрдХреНрд░рдо рдмрдирд╛рддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИред
рдУрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рдЕрдиреБрдХреНрд░рдо ()
рдЖрдк рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдкрд░рд┐рдгрд╛рдо:

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдкрд░ рдЕрдиреБрдХреНрд░рдо рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд░рд┐рдХреЙрд░реНрдб рдкрд╣рд▓реЗ рдХреНрд░рдордмрджреНрдз рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЕрдиреБрдХреНрд░рдо рдХреНрд░рдорд╛рдВрдХрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реАрдорд╛рдПрдВред
рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдмрд╛рдзрд╛ рдХреА рдЬрд╛рдБрдЪ
- рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди
- рдкрд░рд┐рдХрд▓рд┐рдд рд╕реНрддрдВрдн
- рджреГрд╢реНрдп (рджреГрд╢реНрдп)
- рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдп
- рдХрд╕реНрдЯрдо рдПрдХрддреНрд░реАрдХрд░рдг рдХрд╛рд░реНрдп
- рд╕рдмрдХреНрд╡реЗрд░реА
- CTE (рд╕рд╛рдорд╛рдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐)
- subdatasheet
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╢реАрд░реНрд╖
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд░
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрддреНрдкрд╛рджрди
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкрд░
- рдЬрд╣рд╛рдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛
- рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЖрджреЗрд╢ рджреНрд╡рд╛рд░рд╛
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛
Sp_fterence_get_range рдлрд╝рдВрдХреНрд╢рди
рдпрджрд┐ рд╣рдо
NEXT VALUE рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рддреНрдпреЗрдХ VALUES рд╕реНрддрд░ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рдердХрд╛рдК рджрд┐рдЦрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдорд╛рдиреЛрдВ рдХреА рдЗрдЪреНрдЫрд┐рдд рд╢реНрд░реЗрдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП sp_fterence_get_range рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдореИрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдБ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрдХреНрд░рдо рдХреЛ 1000 рддрдХ рдмрдврд╝рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд▓рд╛рдкрддрд╛ рдорд╛рдиреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рдмрд┐рдирд╛ рдХрд╣реАрдВ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдорд╛рди рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
рдЕрдиреБрдХреНрд░рдо рдФрд░ рдкрд╣рдЪрд╛рди рдХреЗ рдмреАрдЪ рддреБрд▓рдирд╛
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдХреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдорд╛рди рд╕рдВрдХреЗрдд рди рд░рдЦреЗрдВ:
- рдкрд╣рдЪрд╛рди рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдпрд╣ рдЕрд╡рд┐рднрд╛рдЬреНрдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ; рдЕрдиреБрдХреНрд░рдо рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред
- рдЖрдк sp_fterence_get_range рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрдиреБрдХреНрд░рдо рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рди рдХреЗ рд╕рд╛рде рдЕрд╕рдВрднрд╡ рд╣реИред
- рдЕрдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП, рдЖрдк рдореВрд▓реНрдп рд╕реАрдорд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рднреА рдЕрд╕рдВрднрд╡ рд╣реИред
- рдЪрдХреНрд░реАрдп рдорд╛рди рднреА рдХреЗрд╡рд▓ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рд╕реАрдХреНрд╡реЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╢рдмреНрджред
- рдЕрдиреБрдХреНрд░рдо рдкрд╣рдЪрд╛рди рдкрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рджреЗрддрд╛ рд╣реИред рд╣рд╛рд░реВрди рдмрд░реНрдЯреНрд░реЗрдВрдб рдХреЗ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рддреБрд▓рдирд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо
- рдЖрдк рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк MSDN рдкрд░ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:
- рд╕реГрдЬрди рдХреА рд╕реАрдорд╛
- рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
- sp_sequence_get_range
рдЪрдХреНрд░ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг:
MS SQL рд╕рд░реНрд╡рд░ 2011: рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдбреЗрдЯрд╛рдмреЗрд╕ , рдирдпрд╛ рдЕрдиреБрдХреНрд░рдо рдСрдмреНрдЬреЗрдХреНрдЯ , рдСрдлрд╕реЗрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ , рдПрд░рд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ , рд░рд┐рдЬрд▓реНрдЯ рд╕реЗрдЯ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде , SSMS рдореЗрдВ рдирдпрд╛ ред