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

valores autoincrementales dependientesd de un campo

Estas en el tema de valores autoincrementales dependientesd de un campo en el foro de Oracle en Foros del Web. Buenos días, Os presento mi problema. Tengo una tabla de una BD oracle con una serie de campos, supongamos campo1, campo2, campo3. Necesito hacer un ...
  #1 (permalink)  
Antiguo 02/03/2010, 03:43
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
valores autoincrementales dependientesd de un campo

Buenos días,

Os presento mi problema.

Tengo una tabla de una BD oracle con una serie de campos, supongamos campo1, campo2, campo3.

Necesito hacer un script que cree un campo4 que no sea null, pero para eso tengo que crear primero campo4, y luego crear un script que rellene los registros existentes de forma autoincremental dependiendo de lo que contenga campo1, es decir, algo de este estilo:

CAMPO1 CAMPO2 CAMPO3 CAMPO4
A datos datos 1
A datos datos 2
B datos datos 1
B datos datos 2
B datos datos 3
C datos datos 1
D datos datos 1
D datos datos 2

¿Como podría hacerlo?

Espero vuestra ayuda, un saludo
  #2 (permalink)  
Antiguo 02/03/2010, 09:59
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años
Puntos: 6
Respuesta: valores autoincrementales dependientesd de un campo

Hola

El campo nuevo asi:

alter table nombre_tabla
add (campo4 number NOT NULL);

Un ejemplo del resultado del script seria algo asi?

A datos datos 1
A datos datos 2
B datos datos 1
B datos datos 2
B datos datos 3
C datos datos 1
D datos datos 1
D datos datos 2
A datos datos 3

el campo4 seria el contador de campo1 es decir que tantos campos A hay por ejm.
en el script de abajo entonces introduciria campo1= A y campo4=4

INSERT INTO nombre_tabla VALUES('A','Lo que sea','Lo que sea',(SELECT MAX(campo4)+1 FROM nombre_tabla WHERE campo1='A'));

Saludos,
  #3 (permalink)  
Antiguo 02/03/2010, 13:07
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: valores autoincrementales dependientesd de un campo

Partiendo de la base de que no pudes añadir un campo obligatorio si no le pones un "DEFAULT VALUE" o la tabla esté vacía, tal vez debes mirar en el regedit que valor tiene el formato de fecha
  #4 (permalink)  
Antiguo 02/03/2010, 13:17
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años
Puntos: 6
Respuesta: valores autoincrementales dependientesd de un campo

Partiendo de la base de que no pudes añadir un campo obligatorio si no le pones un "DEFAULT VALUE" o la tabla esté vacía, tal vez debes mirar en el regedit que valor tiene el formato de fecha


Esa ultima parte no la entendi o no la veo en contexto...jejejejeje
  #5 (permalink)  
Antiguo 02/03/2010, 13:20
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 16 años
Puntos: 6
Respuesta: valores autoincrementales dependientesd de un campo

Umm bueno ya hablamos de consistencia de datos, lo mas sano es crear la tabla vacia en introducir unos valores iniciales sin la regla anterior, xq de algun punto tienes que partir.


Saludos
  #6 (permalink)  
Antiguo 03/03/2010, 06:00
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: valores autoincrementales dependientesd de un campo

Cita:
Iniciado por 8vio Ver Mensaje
Umm bueno ya hablamos de consistencia de datos, lo mas sano es crear la tabla vacia en introducir unos valores iniciales sin la regla anterior, xq de algun punto tienes que partir.


Saludos
Es buena idea, o también puedes añadirlo como OPCIONAL, actualizarlo con la lógica que quieras y luego ponerlo OBLIGATORIO

Etiquetas: campos
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 15:56.