Operaciones basicas en SQL

27/11/2004 - 01:11 por El foxero | Informe spam
Hola, de nuevo, yo aqui aprendiendo SQL. Pregunte sobre hacer todo en SP
el otro dia y la verdad que me convencieron las respuestas y decidi hacer
todo en SP hasta las operaciones basicas de insertar, borrar y actualizar
nombrando los sp's con una notacion facil de recordar respecto al nombre de
la tabla.

Hasta ahi bien pero, trabajando con Visual Foxpro pienso hacer una libreria
de clases para un poco generalizar el proceso. y ahi me vienen las dudas.
Para salvar un registro que tengo en pantalla debo primero buscarlo para
saber si no existe para luego hacer un insert pero si existe hacer un
update. La primera pregunta es, tendria que tener entonces 3 SP's para esto
es decir un SP para buscar la clave otro SP para insertarlo y otro SP para
actualizarlo ??????!!!!! Es eso correcto ?

Otra pregunta es para saber si una clave existe en una tabla de SQL, solo se
puede haciendo un SELECT y retornando el registro ? o hay otra forma ?

Muchas gracias

Raul

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
27/11/2004 - 01:16 | Informe spam
"El foxero" wrote in message
news:
Mostrar la cita
La respuesta es: No.

En un sistema de base de datos como SQL (lo mismo pasa con Oracle, DB2,
Informix...) el control de consistencia de datos es tarea del motor
relacional y se hace mediante transacciones. Lo que haces es siempre
insertar y atrapar una excepción si el motor te responde que no pudo
insertar debido a X problema (e.g. una clave primaria duplicada).

Es decir, la lógica usada *no* es "busco si el dato no existe y si no
existe, lo inserto"... lo que se hace es "inserto y veo si todo salió ok".
En T-SQL es algo así:

INSERT ...
IF @@ERROR <> 0


Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
#2 El foxero
27/11/2004 - 01:35 | Informe spam
Mostrar la cita
Gracias por la respuesta pero... entonces para el caso de la actualización,
como sé cuando utilizar UPDATE para reemplazar valores de campos que no son
la clave primaria ????, no tendria que buscar el registro primero ?
#3 Gustavo Larriera [MVP]
27/11/2004 - 01:45 | Informe spam
"El foxero" wrote in message
news:
Mostrar la cita
No sé bien cómo es el caso de uso del formulario que le muestras al usuario.
Supongo que si deseas que desde el mismo lugar el usuario agregue uno nuevo
o modifique si existe, en ese caso sí puedes hacer un SELECT buscando el
dato. Dependerá de cómo se lo presentes al usuario.

En opinión muy personal, me gustan más las acciones divididas así: La acción
Insertar siempre agrega un objeto nuevo, la acción Buscar muestra los datos
encontrados y habilita a las acciones Eliminar y Modificar.

saludos
gux
#4 Maxi
27/11/2004 - 01:45 | Informe spam
Hola Gux, comparto en todo lo que indicas :) pero...

Hay casos donde se justifica hacer antes una verificacion para que el motor
no la tenga que hacer. Esto puede un enorme paso de proceso y sobre todo no
generar transacciones al divino boton!! pero ojo, este tipo de soluciones
las tuve que aplicar en casos muy pero muy particulares, para lo general es
como has indicado :)

"Gustavo Larriera [MVP]" escribió en el mensaje
news:ez$
Mostrar la cita
#5 El foxero
27/11/2004 - 02:00 | Informe spam
Ok.. Entiendo. Si el usuario esta en modo de actualizar pues se supone que
al grabar se va a mandar un update. Si esta en modo insertar pues se supone
que voy a hacer un insert y al hacerlo detectar si la clave ya existe con la
tecnica de ensayo y error. Te agradezco la aclaracion. Ya me surgiran
otras cositas cuando siga progresando en mi aprendizaje... :)


Mostrar la cita
usuario.
Mostrar la cita
nuevo
Mostrar la cita
acción
Mostrar la cita
datos
Mostrar la cita
Ads by Google
Search Busqueda sugerida