SQL Server 2012 Transact SQL új funkciók – Sequence
“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:
1CREATE TABLE [dbo].[Table1]
2(
3 [ID] int NOT NULL,
4 [Name] nvarchar(50) NULL
5);
6
7CREATE TABLE [dbo].[Table2]
8(
9 [ID] int NOT NULL,
10 [Name] nvarchar(50) NULL
11);
12GO
Majd létrehozom a számsort:
1CREATE SEQUENCE [dbo].[SampleSequence] AS int
2START WITH 1
3INCREMENT BY 2;
4GO
Ezek után hozzáadok sorokat (nem rekordokat 😁: Joe Celko’s SQL for Smarties Advanced SQL Programming):
1INSERT INTO [dbo].[Table1] ([ID], [Name]) VALUES (NEXT VALUE FOR [dbo].[SampleSequence], 'Test1');
2INSERT INTO [dbo].[Table2] ([ID], [Name]) VALUES (NEXT VALUE FOR [dbo].[SampleSequence], 'Test2');
3
4INSERT INTO [dbo].[Table1] ([ID], [Name]) VALUES (NEXT VALUE FOR [dbo].[SampleSequence], 'Test3');
5INSERT INTO [dbo].[Table2] ([ID], [Name]) VALUES (NEXT VALUE FOR [dbo].[SampleSequence], 'Test4');
Majd az eredményt lekérdezem:
1SELECT * FROM [dbo].[Table1];
2SELECT * 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 |
Table2
| 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.