Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Un autoincrement en Oracle

Estas en el tema de Un autoincrement en Oracle en el foro de Oracle en Foros del Web. Quiero alimentar una tabla nueva con datos de otra tabla. Pero la nueva tiene un primary key numerico, el cual no viene de la tabla ...
  #1 (permalink)  
Antiguo 29/07/2010, 01:33
 
Fecha de Ingreso: enero-2009
Mensajes: 81
Antigüedad: 15 años, 11 meses
Puntos: 0
Un autoincrement en Oracle

Quiero alimentar una tabla nueva con datos de otra tabla.

Pero la nueva tiene un primary key numerico, el cual no viene de la tabla vieja.

Se que se hace una secuencia.
Se que se hace un trigger.
Y finalmente se hace un insert.

Pero, no se porque el trigger no me lo acepta. Me dice que no puedo usar tablas de SYS.

y luego no se como combinar el insert de la tabla vieja a la nueva + (el trigger o secuencia)

Gracias
  #2 (permalink)  
Antiguo 29/07/2010, 06:55
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Un autoincrement en Oracle

Bazzi...
Replantea tus preguntas y trata de ser un poco mas especifico en lo que quieres.
Primero... que has hecho con secuencias? que has hecho con triggers? Cuando dices que no te lo acepta... que es lo que te pasa? Cual es el error que emite oracle?

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 29/07/2010, 08:20
 
Fecha de Ingreso: enero-2009
Mensajes: 81
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Un autoincrement en Oracle

Disculpa Huesos52, tienes razon, confundo un poco.

Ok, te pase la estructura de sources.

En ese es que quiero hacer mis catalogos. Ahi es para este tema de autoincrement.

Y para el primero. En mi metadata, tengo varios documentos, y dentro de los documentos vienen varias personas. Yo solo quiero la primera persona que aparece en cada documento.

Osea:

1. autoincrement es para mis "id" de cada catalogo
2. El primero de la lista, es para el primer nombre que aparece de una lista de varias personas.

Espero que ahora si sea un poco mas explicito. Te agradezco de antemano.
  #4 (permalink)  
Antiguo 29/07/2010, 08:35
 
Fecha de Ingreso: enero-2009
Mensajes: 81
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Un autoincrement en Oracle

Aqui esta lo que he intentado.

create table a1_source (
source_id number,
source_name data varchar2(100)
);

create sequence test_seq
start with 1
increment by 1
nomaxvalue;

create trigger test_trigger
before insert on a1_source
for each row
begin

select test_seq.nextval into :new.source_id from dual;

end;

El error es en: "select test_seq.nextval..."

An attempt was made to create a trigger on an object owned by SYS.
Do not create triggers on objects owned by SYS.
Me marca error en: "select test_seq.nextval" Ahi es donde me dice

gracias
  #5 (permalink)  
Antiguo 29/07/2010, 09:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Un autoincrement en Oracle

Mi pregunta es:
Estas tablas las creas como SYS? Todo tu sistema lo basas en este usuario?
Esta es una muy mala forma de trabajar con Oracle. Para eso existen los esquemas (usuarios) para separar las tablas y objetos del sistema de los objetos de tus diseños de bases de datos.

El error es claro. http://ora-04089.ora-code.com/

La solución a esto, es aplicar triggers en tablas que no sean propietarias de sys. Te imaginas que esto estuviera permitido? un trigger que borre tablas del sistema? Donde estaría la estabilidad y seguridad de Oracle en estos casos?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 30/07/2010, 01:18
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 6 meses
Puntos: 43
Respuesta: Un autoincrement en Oracle

No estoy seguro de que se pueda manipular el contenido de las tablas de SYS, aun usando esa cuenta.

Realmente las V$, GV$ y DBA, no son tablas, son vistas.
  #7 (permalink)  
Antiguo 02/08/2010, 07:21
 
Fecha de Ingreso: enero-2009
Mensajes: 81
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Un autoincrement en Oracle

Exactamente como dices huesos52, y tambien jc300. No es mi intension trabajar con tablas propiedad de SYS. Quiero con tablas muy normales, pero cuando pongo estas instrucciones me indica que no puede pues no puedo modificar las tablas de SYS.

Yo lo quiero hacer normalito, normalito.
  #8 (permalink)  
Antiguo 02/08/2010, 07:36
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Un autoincrement en Oracle

Como se llama el usuario (Esquema) donde creas las tablas?
Cuando te conectas a oracle con que usuario lo haces?

se me hace que te conectas como sys y creas tus tablas bajo este usuario.

Tira esta consulta y dinos que te aparece.
Código SQL:
Ver original
  1. SELECT owner FROM dba_tables WHERE UPPER(TABLE_NAME)=UPPER('A1_SOURCE');
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 02/08/2010, 07:52
 
Fecha de Ingreso: enero-2009
Mensajes: 81
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Un autoincrement en Oracle

Mi conexion se llama "connXE". Intente lo que me dices y me dice "%s: invalid identifier"
  #10 (permalink)  
Antiguo 02/08/2010, 07:58
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Un autoincrement en Oracle

Que sale con:
SELECT user FROM DUAL; ?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 02/08/2010, 08:09
 
Fecha de Ingreso: enero-2009
Mensajes: 81
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Un autoincrement en Oracle

User
________

sys
  #12 (permalink)  
Antiguo 02/08/2010, 08:16
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Un autoincrement en Oracle

Ahí está el problema bazzi. Todas las tablas que estas creando lo haces bajo el usuario sys y por eso el error que te aparece al tratar de crear el trigger.

Mirate estos enlaces:
http://ora.u440.com/usuarios/create%20user.html
http://ora.u440.com/usuarios/grant.html

No debes mezclar bajo un mismo usuario, las tablas del sistema y las tablas de tu propiedad y trabajo. Para eso están los esquemas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: autoincrementable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:27.