Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Oracle

Respuesta
 
Herramientas Desplegado
Antiguo 21-abr-2008, 12:28   #1 (permalink)
CDj
CDj está en el buen camino
 
Avatar de CDj
 
Fecha de Ingreso: junio-2004
Mensajes: 58
Select Insert...

Hola, ¿es posible hacer esto directamente sin tener que usar un procedimiento o funcion?

Tabla A
---------
ID - Descripcion
1 - A
2 - B
3 - C
4 - D
5 - E

Hacer un INSERT sobre la tabla A siempre y cuando no exista ese valor ya -normalmente pegaria una excepción-, osea...

SELECT Descripcion
CASE Descripcion
WHEN Descripcion = NULL THEN INSERT INTO a VALUES(MAX(id) + 1, ?valor)
FROM a
WHERE Descripcion = 'C';

En este caso no lo deberia insertar, ya que existe... en caso contrario sí.
¿Esto está bien? ¿alguna sugerencia?.

Muchas gracias, saludos!!
CDj está desconectado   Responder Citando
Antiguo 22-abr-2008, 04:52   #2 (permalink)
CDj
CDj está en el buen camino
 
Avatar de CDj
 
Fecha de Ingreso: junio-2004
Mensajes: 58
Re: Select Insert...

Creo que con...

insert into A (id, descriocion)
select '5', descripcion from A
where descripcion not exist (select descripcion from A)
and descripcion = 'D'

Insertaria 5, D ya que ese código no existe.
¿alguien opina como hacerlo más óptimo?
CDj está desconectado   Responder Citando
Antiguo 22-abr-2008, 05:46   #3 (permalink)
MutenRo ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Euskadi
Mensajes: 22
Re: Select Insert...

Hola CDj,

creo que lo ideal sería poner el campo descripción como UNIQUE, si realmente no quieres que nunca se repitan, de manera que al hacer la insert de manera habitual captures la excepción y decidas por código qué hacer.

Si se trata de un caso particular o quieres hacerlo con un script sin bloques PL-SQL, entonces puedes hacerlo de la siguiente manera:
Código:
INSERT INTO tabla(id, descripcion) SELECT idNueva, 'desc' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM tabla WHERE Descripcion = 'desc');
Cita:
... INSERT INTO a VALUES(MAX(id) + 1,...
Esto te podría llegar a dar problemas, utiliza las secuencias.

Un saludo.
MutenRo está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 03:07.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93