2012-06-12 367 views
21

¿Cómo configuro una columna para que se incremente automáticamente con Oracle SQL Developer? ¿Por qué el formulario está deshabilitado?cómo configurar la columna de incremento automático con el desarrollador sql

Oracle SQL Developer

Nota: La imagen muestra el modelador de datos, pero la pregunta y la respuesta charla superior sobre la edición de una base de datos existente.

+0

Ver esta publicación que es muy similar http://stackoverflow.com/questions/10613846/create-table-with-sequence-nextval-in-oracle –

Respuesta

24

Desafortunadamente Oracle no es compatible con auto_increment como lo hace mysql. Debes esforzarte un poco más para lograrlo.

dicen que esto es su mesa -

CREATE TABLE MYTABLE (
    ID NUMBER NOT NULL, 
    NAME VARCHAR2(100) 
    CONSTRAINT "PK1" PRIMARY KEY (ID) 
); 

Usted tendrá que crear una secuencia -

CREATE SEQUENCE S_MYTABLE 
START WITH 1 
INCREMENT BY 1 
CACHE 10; 

y un disparador -

CREATE OR REPLACE TRIGGER T_MYTABLE_ID 
BEFORE INSERT 
ON MYTABLE 
REFERENCING NEW AS NEW 
FOR EACH ROW 
BEGIN 
    if(:new.ID is null) then 
    SELECT S_MYTABLE.nextval 
    INTO :new.ID 
    FROM dual; 
    end if; 
END; 
/

ALTER TRIGGER "T_MYTABLE_ID" ENABLE; 
+0

Quiero que se pueda crear automáticamente.hehehe .... –

+2

Desde 2012, las cosas han cambiado. De hecho, puede hacer esto ahora con la llegada de Oracle Database 12c. He aquí cómo hacerlo ahora: http://www.thatjeffsmith.com/archive/2014/01/defining-12c-identity-columns-in-oracle-sql-developer-data-modeler/ – thatjeffsmith

+1

Me gusta más la respuesta de Dan. El de la foto Vale la pena 1000 palabras. – Wes

1

Cómo hacerlo con Oracle SQL Desarrollador: En el panel izquierdo, debajo de las conexiones encontrará "Secuencias", haga clic derecho y seleccione c Reate una nueva secuencia de la ventana emergente sensible al contexto. Complete los detalles: Nombre del esquema, nombre de secuencia, propiedades (comience con valor, valor mínimo, valor máximo, valor de incremento, etc.) y haga clic en Aceptar. Suponiendo que tiene una tabla con una clave que usa este auto_increment, mientras inserta en esta tabla solo ingrese "your_sequence_name.nextval" en el campo que utiliza esta propiedad. ¡Supongo que esto debería ayudar! :)

5

Puede hacer un incremento automático en SQL Modeler. En la ventana de propiedades de la columna, haga clic en: General y luego marque la casilla de Incremento automático. Después de eso, la ventana de incremento automático estará habilitada para usted.

+0

¡Gracias por tu comentario! No utilices firmas/frases en tus publicaciones. Su cuadro de usuario cuenta como su firma, y ​​puede usar su perfil para publicar cualquier información sobre usted que desee. [Preguntas frecuentes sobre firmas/eslóganes] (http://stackoverflow.com/faq#signatures) –

1

Encontré esta publicación, que se ve un poco vieja, pero pensé que actualizaría a todos sobre mis nuevos hallazgos.

Estoy usando Oracle SQL Developer 4.0.2.15 en Windows. Nuestra base de datos es Oracle 10g (versión 10.2.0.1) que se ejecuta en Windows.

Para realizar una auto-incremento columna en Oracle -

  1. abren la conexión de base de datos en la ficha Conexiones
  2. Despliegue la sección Tablas y haga clic derecho en la tabla que tiene la columna que desea cambiar para autoincrementar y seleccione Editar ...
  3. Elija la sección Columnas y seleccione la columna que desea autoincrementar (columna Clave principal)
  4. A continuación, haga clic en la sección "Columna de identidad" debajo de la lista de columnas, y cambie el tipo de None a "Column Sequence" "
  5. dejar la configuración predeterminada (o cambiar los nombres de la secuencia y el gatillo si lo prefiere) y luego haga clic en

Su columna OK id (clave principal) a partir de ahora de incremento automático, pero la secuencia comenzará a partir de 1. Si necesita incrementar la identificación hasta cierto punto, tendrá que ejecutar unas pocas instrucciones de modificación en contra de la secuencia.
This post tiene más detalles y cómo superar esto.

he encontrado la solución here

47

Si desea hacer su incremento automático PK, es necesario establecer la propiedad de la columna ID para esa clave primaria.

  1. Haga clic derecho sobre la tabla y seleccione "Editar".
  2. En la ventana de la tabla "Editar", seleccione "columnas", y luego seleccione su columna PK .
  3. Vaya a la pestaña Columna ID y seleccione Secuencia de columnas como Tipo. Esto creará un activador y una secuencia, y asociará la secuencia a la clave primaria .

Consulte la imagen siguiente para una mejor comprensión.

// Mi fuente es: http://techatplay.wordpress.com/2013/11/22/oracle-sql-developer-create-auto-incrementing-primary-key/

+2

Gran respuesta. No estoy seguro de por qué no se sube la apuesta más. – Wes

+0

Gracias hombre, lo aprecio! –

+0

Gran respuesta. Sin embargo, puedo enmendar que es importante echar un vistazo a la casilla de verificación "La columna de verificación es nula antes de insertar", que podría no ser lo que desea. Al usar una ID de secuencia, generalmente no querrá que se rellene desde otro lugar, (Puede depender, pero asegúrese de pensar por un momento). – not2savvy

3

@ tom-studee Tenías razón, es posible hacerlo en el modelador de datos.

Haga doble clic en su tabla, luego vaya a la sección de la columna. Aquí haga doble clic en la columna que tendrá el incremento automático. En la sección general hay una casilla de verificación "autoincrement", solo márcalo.

Después de eso, también puede ir a la sección "autoincrement" para personalizarlo.

Al guardarlo y pedirle al modelador de datos que genere el script SQL, verá la secuencia y el disparador que representan su autoincremento.

Cuestiones relacionadas