database - modeler - Cómo configurar la columna de incremento automático con el desarrollador de SQL
sql developer mac (8)
@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 "autoincremento", simplemente marque la casilla.
Después de eso, también puede ir a la sección "autoincremento" para personalizarlo.
Cuando lo guarde y solicite al modelador de datos que genere el script SQL, verá la secuencia y el desencadenante que representan su autoincremento.
¿Cómo configuro una columna para que se incremente automáticamente con Oracle SQL Developer? ¿Por qué está deshabilitada la forma?
Nota: La imagen muestra el Modelador de datos, pero la pregunta y la respuesta principal hablan sobre la edición de una base de datos existente.
Cómo hacerlo con Oracle SQL Developer: En el panel izquierdo, debajo de las conexiones, encontrará "Secuencias", haga clic con el botón derecho y seleccione crear una nueva secuencia desde 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, simplemente proporcione "your_sequence_name.nextval" en el campo que utiliza esta propiedad. Supongo que esto debería ayudar! :)
Desafortunadamente, oracle no admite auto_increment como mysql. Necesitas poner un poco de esfuerzo extra para conseguir eso.
di que esta es tu mesa
CREATE TABLE MYTABLE (
ID NUMBER NOT NULL,
NAME VARCHAR2(100)
CONSTRAINT "PK1" PRIMARY KEY (ID)
);
Necesitarás crear una secuencia
CREATE SEQUENCE S_MYTABLE
START WITH 1
INCREMENT BY 1
CACHE 10;
y un gatillo
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;
Encontré esta publicación, que parece un poco antigua, pero pensé que actualizaría a todos sobre mis nuevos hallazgos.
Estoy utilizando 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 hacer una columna de incremento automático en Oracle -
- Abre la conexión de la base de datos en la pestaña Conexiones.
- Expanda la sección Tablas y haga clic con el botón derecho en la tabla que tiene la columna que desea cambiar a incremento automático y seleccione Editar ...
- Elija la sección Columnas y seleccione la columna que desea incrementar automáticamente (columna de clave principal)
- A continuación, haga clic en la sección "Columna de identidad" debajo de la lista de columnas y cambie el tipo de Ninguno a "Secuencia de columnas"
- Deje la configuración predeterminada (o cambie los nombres de la secuencia y el desencadenador si lo prefiere) y luego haga clic en Aceptar
Su columna de identificación (clave principal) ahora se incrementará automáticamente, pero la secuencia comenzará en 1. Si necesita incrementar la identificación en un cierto punto, tendrá que ejecutar algunas declaraciones alternativas contra la secuencia.
Esta publicación tiene algunos detalles más y cómo superar esto.
Encontré la solución http://techatplay.wordpress.com/2013/11/22/oracle-sql-developer-create-auto-incrementing-primary-key/
Oracle no tiene columnas de autoincremento. Necesitas una secuencia y un disparador. Aquí hay una publicación de blog al azar que explica cómo hacerlo: http://www.lifeaftercoffee.com/2006/02/17/how-to-create-auto-increment-columns-in-oracle/
Puede hacer auto incremento en SQL Modeler. En la ventana de propiedades de la columna Haga clic en: General, luego marque la casilla de Incremento automático. Después de eso, la ventana de incremento automático se habilitará para usted.
Si desea realizar su incremento automático de PK, debe establecer la propiedad de columna de ID para esa clave principal.
- Haga clic derecho en la tabla y seleccione "Editar".
- En la ventana "Editar" Tabla, seleccione "columnas", y luego seleccione su columna PK.
- Vaya a la pestaña Columna ID y seleccione Secuencia de columnas como Tipo. Esto creará un disparador y una secuencia, y asociará la secuencia a la clave principal.
Vea la imagen de abajo para una mejor comprensión.
// Mi fuente es: http://techatplay.wordpress.com/2013/11/22/oracle-sql-developer-create-auto-incrementing-primary-key/
ACTUALIZACIÓN : En Oracle 12c en adelante, tenemos la opción de crear un campo de incremento automático, es mejor que el desencadenante y la secuencia.
- Haga clic derecho en la tabla y seleccione "Editar".
- En la ventana "Editar" Tabla, seleccione "columnas", y luego seleccione su columna PK.
- Vaya a la pestaña Columna de identidad y seleccione "Generado como identidad" como Tipo, ponga 1 en el campo de inicio e incremento. Esto hará que esta columna se incremente automáticamente.
Vea la imagen de abajo
De la declaración de SQL
La columna IDENTIDAD ya está disponible en Oracle 12c:
create table t1 (
c1 NUMBER GENERATED by default on null as IDENTITY,
c2 VARCHAR2(10)
);
o especifique los valores de inicio e incremento, evitando también que se inserte en la columna de identidad (GENERADO SIEMPRE) (de nuevo, solo Oracle 12c +)
create table t1 (
c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
c2 VARCHAR2(10)
);
EDITAR : si se encuentra con un error como "ORA-30673: la columna a modificar no es una columna de identidad", entonces necesita crear una nueva columna y la anterior.