ORACLE - Create Sequence
  CREATE  SEQUENCE Purpose To create a  sequence. A sequence is a database  object from which multiple users may generate unique integers. You can use  sequences to automatically generate primary key  values.   Prerequisites To create a  sequence in your own schema, you must have CREATE SEQUENCE privilege.   To create a  sequence in another user's schema, you must have CREATE ANY SEQUENCE privilege.   Syntax   Using  Sequences You can use  sequence numbers to automatically generate unique primary key values for your  data, and you can also coordinate the keys across multiple rows or tables.   Values for a given  sequence are automatically generated by special Oracle routines and,  consequently, sequences avoid the performance bottleneck that results from  implementation of sequences at the application level. For example, one common  application-level implementation is to force each transaction to lock a sequence  number table, increment the sequence, and then release the table. Under this  implementation, only one sequence number can be generated at a time. In  contrast, Oracle sequences permit the simultaneous generation of multiple  sequence numbers while guaranteeing that every sequence number is unique.   When a sequence  number is generated, the sequence is incremented, independent of the transaction  committing or rolling back. If two users concurrently increment the same  sequence, the sequence numbers each user acquires may have gaps because sequence  numbers are being generated by the other user. One user can never acquire the  sequence number generated by another user. Once a sequence value is generated by  one user, that user can continue to access that value regardless of whether the  sequence is incremented by another user.  Sequence numbers  are generated independently of tables, so the same sequence can be used for one  or for multiple tables. It is possible that individual sequence numbers will  appear to be skipped, because they were generated and used in a transaction that  ultimately rolled back. Additionally, a single user may not realize that other  users are drawing from the same sequence.   Accessing  Sequence Values Once a sequence is  created, you can access its values in SQL statements with the following  pseudocolumns:  CURRVAL  returns the current value of the sequence.         NEXTVAL  increments the sequence and returns the new value.             Example The following  statement creates the sequence ESEQ:  CREATE  SEQUENCE eseq    INCREMENT BY 10   The first  reference to ESEQ.NEXTVAL returns 1. The second returns 11. Each subsequent  reference will return a value 10 greater than the one previous.     CURRVAL  and NEXTVAL A sequence is a  schema object that generates sequential numbers. When you create a sequence, you  can specify its initial value and an increment.  CURRVAL  returns the current value in a specified sequence. Before you can reference  CURRVAL in a  session, you must use NEXTVAL to  generate a number. A reference to NEXTVAL stores  the current sequence number in CURRVAL.  NEXTVAL  increments the sequence and returns the next value. To obtain the current or  next value in a sequence, you must use dot notation, as follows:   sequence_name.CURRVAL sequence_name.NEXTVAL After creating a  sequence, you can use it to generate unique sequence numbers for transaction  processing. However, you can use CURRVAL and  NEXTVAL only  in a select list, the VALUES  clause, and the SET  clause. In the following example, you use a sequence to insert the same employee  number into two tables:  INSERT INTO  emp VALUES (empno_seq.NEXTVAL, my_ename, ...); INSERT INTO  sals VALUES (empno_seq.CURRVAL, my_sal, ...); If a transaction  generates a sequence number, the sequence is incremented immediately whether you  commit or roll back the transaction.   
 
       
                                                          
No hay comentarios:
Publicar un comentario