Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak pobrać aktualną wartość sekwencji wyroczni bez jej zwiększania?

SELECT last_number
  FROM all_sequences
 WHERE sequence_owner = '<sequence owner>'
   AND sequence_name = '<sequence_name>';

Możesz uzyskać różne metadane sekwencji z user_sequences , all_sequences i dba_sequences .

Te widoki działają w wielu sesjach.

EDYTUJ:

Jeśli sekwencja znajduje się w domyślnym schemacie, to:

SELECT last_number
  FROM user_sequences
 WHERE sequence_name = '<sequence_name>';

Jeśli chcesz wszystkie metadane, to:

SELECT *
  FROM user_sequences
 WHERE sequence_name = '<sequence_name>';

Mam nadzieję, że to pomoże...

EDIT2:

Długim sposobem na zrobienie tego bardziej niezawodnie, jeśli rozmiar pamięci podręcznej nie jest równy 1, to:

SELECT increment_by I
  FROM user_sequences
 WHERE sequence_name = 'SEQ';

      I
-------
      1

SELECT seq.nextval S
  FROM dual;

      S
-------
   1234

-- Set the sequence to decrement by 
-- the same as its original increment
ALTER SEQUENCE seq 
INCREMENT BY -1;

Sequence altered.

SELECT seq.nextval S
  FROM dual;

      S
-------
   1233

-- Reset the sequence to its original increment
ALTER SEQUENCE seq 
INCREMENT BY 1;

Sequence altered.

Tylko uważaj, jeśli inni używają sekwencji w tym czasie - oni (lub Ty) mogą dostać

ORA-08004: sequence SEQ.NEXTVAL goes below the sequences MINVALUE and cannot be instantiated

Możesz także ustawić pamięć podręczną na NOCACHE przed zresetowaniem, a następnie z powrotem do pierwotnej wartości, aby upewnić się, że nie zbuforowałeś wielu wartości.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Samozadowolenie prowadzi do:Ryzyko staje się rzeczywistością

  2. Jak rozwiązać ORA-29283:nieprawidłowa operacja na pliku?

  3. Łączenie się z bazą danych Oracle za pomocą SQLAlchemy

  4. Czy istnieje sposób na wymuszenie domyślnej wartości true w OracleCommand.BindByName dla ODP.NET?

  5. Jak odzyskać bazę danych za pomocą RMAN