6

次のコードを使用して、SQL Server でシーケンスを作成しています。ただし、不明なオブジェクト タイプとしてエラーが表示されます。解決策を教えてください

これが私のコードです:

create sequence seqval start with 100 increment by 1 minvalue 0 maxvalue 0 no cycle  
 no cache;

前もって感謝します

4

6 に答える 6

2

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

于 2014-04-28T23:48:13.560 に答える
2

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 ずつ増加します。

http://www.w3schools.com/sql/sql_autoincrement.asp

于 2015-07-28T13:16:53.913 に答える
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
于 2014-06-10T22:53:18.123 に答える
-3

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.
于 2013-03-23T08:08:34.243 に答える