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

Jak stworzyć sekwencję Oracle zaczynającą się od maksymalnej wartości z tabeli?

Jeśli możesz używać PL/SQL, spróbuj (EDIT:Zawiera sugestię xlnt Neila, aby zacząć od następnej wyższej wartości):

SELECT 'CREATE SEQUENCE transaction_sequence MINVALUE 0 START WITH '||MAX(trans_seq_no)+1||' INCREMENT BY 1 CACHE 20'
  INTO v_sql
  FROM transaction_log;

EXECUTE IMMEDIATE v_sql;

Kolejna kwestia do rozważenia:ustawiając parametr CACHE na 20, ryzykujesz utratę do 19 wartości w sekwencji, jeśli baza danych ulegnie awarii. Wartości z pamięci podręcznej są tracone przy ponownym uruchomieniu bazy danych. O ile nie trafiasz w sekwencję bardzo często lub nie przejmujesz się zbytnio przerwami, ustawiłbym ją na 1.

Ostatnia nitka:wartości określone dla CACHE i INCREMENT BY są wartościami domyślnymi. Możesz je pominąć i uzyskać ten sam wynik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. podając poprawną nazwę użytkownika i hasło, pobierz ORA-01017:nieprawidłowa nazwa użytkownika/hasło; Logowanie odrzucone

  2. Zachowaj zamówienie z klauzuli „IN”

  3. Różnica w obsłudze przestrzeni między Oracle a SQL Server

  4. Jak poprawnie korzystać z Oracle ORDER BY i ROWNUM?

  5. Tekst Oracle uciekający za pomocą nawiasów klamrowych i symboli wieloznacznych