次のコードを使用して、SQL Server でシーケンスを作成しています。ただし、不明なオブジェクト タイプとしてエラーが表示されます。解決策を教えてください
これが私のコードです:
create sequence seqval start with 100 increment by 1 minvalue 0 maxvalue 0 no cycle
no cache;
前もって感謝します
次のコードを使用して、SQL Server でシーケンスを作成しています。ただし、不明なオブジェクト タイプとしてエラーが表示されます。解決策を教えてください
これが私のコードです:
create sequence seqval start with 100 increment by 1 minvalue 0 maxvalue 0 no cycle
no cache;
前もって感謝します
Numbers
テーブルを作成します。これは、この件に関するSOの質問です。と呼びましょうdbo.Number
。
ID 列を持つテーブルを用意します。シードとステップを適切なものに設定します。
create table dbo.SequenceGenerator(ID int identity(1, 1), dummy int);
次に、数値テーブルから値を挿入し、新しく生成された ID 値を取得します。
declare @HowMany int = 3; -- This determines how large a sequence you receive
-- at each itteration
declare @NewSequenceValue table (ID int);
insert dbo.SequenceGenerator(dummy)
output INSERTED.ID
into @NewSequenceValue
select Number from dbo.Numbers
where Number <= @HowMany;
select * from @NewSequenceValue;
そうしないと、付加価値がないのに大きくなってDELETE .. dbo.SequenceGenerator
しまいます。しないでください。列が最初に宣言されたシード値にTRUNCATE
リセットされます。IDENTITY
SQL Server 2008 はシーケンスを作成できません。Sequence オブジェクトは、現在のバージョンの SQL Server 2012 に適用されます。
https://msdn.microsoft.com/es-es/library/ff878091(v=sql.120).aspx
代わりに、テーブルで IDENTITY を使用できます。次に例を示します。
CREATE TABLE Person(
Id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Name varchar(255) NOT NULL
);
IDENTITY の開始値は 1 で、新しいレコードごとに 1 ずつ増加します。
WITH N0 as (SELECT 1 as n UNION ALL SELECT 1)
,N1 as (SELECT 1 as n FROM N0 t1, N0 t2)
,N2 as (SELECT 1 as n FROM N1 t1, N1 t2)
,N3 as (SELECT 1 as n FROM N2 t1, N2 t2)
,nums as (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as num FROM N3)
SELECT * FROM nums
2012年を実行していますか?問題はありませんでした:
CREATE SEQUENCE seqval
START WITH 100
INCREMENT BY 1
minvalue 100 maxvalue 10000 NO CYCLE
あなたの 0,0 値は私にとって構文エラーを生成しましたが、明確で単純なものです。
The minimum value for sequence object 'seqval' must be less than its maximum value.