sql >> Databasteknik >  >> RDS >> Oracle

Återställ sekvensen till ett specifikt värde

Du kan använda ett negativt inkrement för att återställa en sekvens till ett lägre värde - det här skriptet (det är bara en PL/SQL-blockversion av ditt) kommer att fungera med sekvensvärden större än 9999 utan problem):

declare
 currval pls_integer;
 diff pls_integer;
begin
  select SQ_USER_ID.nextval into currval from dual;
  dbms_output.put_line('value before alter: ' || currval);
  diff := 99999 - currval;
  dbms_output.put_line('diff: ' || diff);
  execute immediate ' alter sequence SQ_USER_ID INCREMENT BY ' ||  diff || 'nocache';
  select SQ_USER_ID.nextval into currval from dual;
  dbms_output.put_line('value after alter: ' || currval);
  execute immediate 'alter sequence SQ_USER_ID INCREMENT BY 1  cache 20';
end;



  1. docker postgres med initiala data kvarstår inte över commits

  2. Hur man omdirigerar stdout från docker-container till värd

  3. MySQL LAST_INSERT_ID() används med flera poster INSERT-sats

  4. Varför får jag OutOfRange Exception i GetOrdinal Function i detta CLOB-fält?