sql >> Database >  >> RDS >> Oracle

Hoe maak je een Oracle-reeks die begint met de maximale waarde uit een tabel?

Als je PL/SQL kunt gebruiken, probeer dan (EDIT:bevat Neil's xlnt-suggestie om met de eerstvolgende hogere waarde te beginnen):

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;

Nog een punt om te overwegen:door de CACHE-parameter in te stellen op 20, loopt u het risico tot 19 waarden in uw reeks te verliezen als de database uitvalt. CACH-waarden gaan verloren bij het opnieuw opstarten van de database. Tenzij je de reeks heel vaak raakt, of je niet zoveel geeft om gaten, zou ik het op 1 zetten.

Een laatste punt:de waarden die u hebt opgegeven voor CACHE en INCREMENT BY zijn de standaardwaarden. Je kunt ze weglaten en hetzelfde resultaat krijgen.



  1. Verzamelmethode:Trimprocedure in Oracle Database

  2. Hoe VERVANGEN in SQL te gebruiken?

  3. De zaak van de kardinaliteit Schatting rode haring

  4. SQL geen groepsfunctie met één groep