“Pár” új, régen várt funkcióval bővült a T-SQL nyelv az SQL Server 2012 verzióban. Mivel éppen aktuális a dolog, szeretnék párat bemutatni. Az első a Sequence azaz számsor, sorozat.
A legjobban az IDENTITY-hez lehet hasonlítani: amíg az IDENTITY egy tábla oszlopához rendlhető, addig a Sequence (számsor) több tábla több oszlopához rendelhető sorozatot tesz lehetővé.
Például:
Legyen két táblám, table1 és table2. Mindkét táblának legyen egy ID oszlopa int adattípussal, amit egy sorozatból szeretnék feltölteni. A sorozat kezdődjön egytől, majd kettesével növekedjen:
CREATE TABLE [dbo].[Table1]
(
[ID] int NOT NULL,
[Name] nvarchar(50) NULL
);
CREATE TABLE [dbo].[Table2]
(
[ID] int NOT NULL,
[Name] nvarchar(50) NULL
);
GO
Majd létrehozom a számsort:
CREATE SEQUENCE [dbo].[SampleSequence] AS int
START WITH 1
INCREMENT BY 2;
GO
Ezek után hozzáadok sorokat (nem rekordokat lsd: Joe Celko’s SQL for Smarties Advanced SQL Programming):
INSERT INTO [dbo].[Table1] ([ID], [Name]) VALUES (NEXT VALUE FOR [dbo].[SampleSequence], 'Test1');
INSERT INTO [dbo].[Table2] ([ID], [Name]) VALUES (NEXT VALUE FOR [dbo].[SampleSequence], 'Test2');
INSERT INTO [dbo].[Table1] ([ID], [Name]) VALUES (NEXT VALUE FOR [dbo].[SampleSequence], 'Test3');
INSERT INTO [dbo].[Table2] ([ID], [Name]) VALUES (NEXT VALUE FOR [dbo].[SampleSequence], 'Test4');
Majd az eredményt lekérdezem:
SELECT * FROM [dbo].[Table1];
SELECT * FROM [dbo].[Table2];
Ugye az elvárt eredmény a Sequence, számsor esetében az alábbi lesz:
Table1 |
ID |
Name |
1 |
Test1 |
5 |
Test3 |
Table12 |
ID |
Name |
3 |
Test2 |
7 |
Test4 |
Vannak további érdekes lehetőségek ezzel az újítással, amiket a BOL-ban, igen jó példákkal meg is lehet találni.
A teljes mintakód innen letölthető: sequence_sample.sql (1.13 kb)