Denny Kusumah wrote:
>
> Dear Master oracle
> Saya mo tanya nih, gmn ya caranya mereset sequence.
> Saya telah membuat suatu sequence, misalkan namanya
> 'tcnpm004s' dengan nilai terakhir 18 (select tcnpm004s.nextval from dual),
> yang saya mo tanya kan adakah yang tahu script untuk mereset nilai
> sequence
> tersebut menjadi satu kembali, saya telah googling kemudian saya
> mendapatkan sintak
> 'alter sequence tcnpm004s increment by -1 minvalue 0' cara tersebut
> berhasil mengurangi
> nilai sequence tapi dengan syarat saya menjalankan sintak tersebut
> selama 17 kali
> (capek deh), nah gmn ya cara langsung mereset sequence biar nilai nya
> langsung menjadi 1
>
>
> -Denny-
>
>
>
Scriptnya kurang lengkap..
- Ambil nilai terakhir
SQL> COLUMN col new_val inc_by;
SQL> SELECT tcnpm004s.NEXTVAL col FROM DUAL;
COL
----------
2
- Jadikan sebagai minus increment
SQL> ALTER SEQUENCE tcnpm004s INCREMENT BY -&inc_by MINVALUE 0;
old 1: ALTER SEQUENCE tcnpm004s INCREMENT BY -&inc_by MINVALUE 0
new 1: ALTER SEQUENCE tcnpm004s INCREMENT BY - 2 MINVALUE 0
Sequence altered.
- Ambil nilai pertama (u/ pengecekan dan penyesuaian nilai mula2)
SQL> SELECT tcnpm004s.NEXTVAL col FROM DUAL;
COL
----------
0
- Kembalikan nilai increment default
SQL> ALTER SEQUENCE tcnpm004s INCREMENT BY 1;
Sequence altered.
- Sequence siap digunakan kembali
SQL> SELECT tcnpm004s.NEXTVAL FROM dual;
NEXTVAL
----------
1
Untuk efesiensi dan kemudahan pemeliharaan, gunakan Stored Procedure
untuk melakukan reset sequence.
hth,
AH