SQL Server 2012のシーケンスの真のニーズは何ですか?
-
10-10-2019 - |
質問
SQL Server 2012(Denali)には、新しい機能があります 順序. 。以下のプログラムを検討してください
/****** Create Sequence Object ******/
CREATE SEQUENCE GenerateSequence
START WITH 1
INCREMENT BY 1;
/****** Create a test Table ******/
Create TABLE tblTest
(
ID int NOT NULL PRIMARY KEY,
Name varchar(100) NOT NULL,
Age int NOT NULL
);
/****** Insert Some Records ******/
INSERT INTO tblTest(ID, Name, Age)
VALUES (NEXT VALUE FOR GenerateSequence, 'Name1',10),
(NEXT VALUE FOR GenerateSequence, 'Name2',20),
(NEXT VALUE FOR GenerateSequence, 'Name3',30),
(NEXT VALUE FOR GenerateSequence, 'Name4',40);
/****** Display result******/
SELECT * FROM tblTest;
出力
ID Name Age
1 Name1 10
2 Name2 20
3 Name3 30
4 Name4 40
これの代わりに、次のような識別列を使用できます
Create TABLE tblTest
(
ID int NOT NULL PRIMARY KEY Identity,
Name varchar(100) NOT NULL,
Age int NOT NULL
);
そして、ように入力できます
INSERT INTO tblTest(Name, Age)
VALUES ('Name1',10),
VALUES ('Name2',20)...
同じ出力を取得するなど
では、シーケンスを使用して達成する余分なベニフィットは何ですか?
解決
これは、異なるデータベーステーブル間で使用できるため、複数のテーブル間でIDを一意に保ちます。
見て SQL Server 2011でSQLシーケンスと1つのシーケンスの作成
SQL Server Sequenceオブジェクトは、SQLテーブルのID列のように数値のシーケンスを生成します。ただし、シーケンス番号の利点は、単一のSQLテーブルではシーケンス番号オブジェクトが限られていないことです。
所属していません StackOverflow