0

SAP Hanaで問題に直面しています。私は次のように作成しましたtable

create column table some_names
   (ID bigint not null primary key generated by default as IDENTITY,
   NAME nvarchar(30));

そして、いくつかの値を挿入しました:

insert into some_names (name) values ('Huey');
insert into some_names (name) values ('Dewey');      
insert into some_names (name) values ('Louie');   

小切手 :

select * from some_names;

ID  NAME
1   Huey
2   Dewey
3   Louie

それは完璧に機能しました。

しかし、この ID フィールドの auto_increment を '0'にリセットしたいと思います。誰かがそれを行う方法を知っていますか?

4

2 に答える 2

0

手順ごとのシーケンス ディスペンサーを探している場合、シーケンスと IDENTITY 列はおそらく間違った選択です。どちらも、保存されたデータとの一貫性を保つために、最後に保証された最大数を保持します。数字が実際に揮発性であり、同じ数字が繰り返し使用されても問題ない場合は、自分で数列を生成する必要があります。

そのための 1 つの方法は、クロス結合、LIMIT、および ROW_NUMBER() ウィンドウ関数を使用することです。もう 1 つのオプションは、シーケンス番号のテーブルを返すテーブル関数を作成することです。

drop function genNo;
create function genNo (in num_rows bigint) returns table (NULLCOL BIGINT, SEQID BIGINT)
as

begin
    DECLARE NULLCOL  INTEGER ARRAY;
    NULLCOL [:num_rows] = NULL;

    result = UNNEST (:NULLCOL) WITH ORDINALITY AS ("NULLCOL", "SEQID");
    return :result;
end;

これにより、たとえば実行できます

select SEQID
from genNo (1000000)

昇順で1000000個の数字を取得します。

于 2016-07-06T05:49:05.997 に答える