sql >> Database >  >> RDS >> Oracle

Hoe kan ik alle reeksen in mijn Oracle DB resetten naar waarde 0?

Je hebt geen dynamische SQL nodig.

begin
for i in (select sequence_name from dba_sequences where sequence_name like '%SEQ_PR%') LOOP
  reset_seq(i.sequence_name);           --> this is just fine
end loop;
end;
/

Voorbeeld (ik gebruik USER_SEQUENCES in plaats daarvan):

SQL> select seq_pr1.nextval from dual;

   NEXTVAL
----------
         9

SQL> select seq_pr2.nextval from dual;

   NEXTVAL
----------
         8

SQL> begin
  2  for i in (select sequence_name from user_sequences where sequence_name like '%SEQ_PR%') LOOP
  3    reset_seq(i.sequence_name);
  4  end loop;
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL> select seq_pr1.nextval from dual;

   NEXTVAL
----------
         1

SQL> select seq_pr2.nextval from dual;

   NEXTVAL
----------
         1

SQL>



  1. Het gebruik van de PostgreSQL-reeks in de slaapstand heeft geen invloed op de reekstabel

  2. Update de rangorde in een MySQL-tabel

  3. LEFT JOIN retourneert niet alle records uit de linkerzijtabel

  4. Meerdere records achter elkaar weergeven