Forums Últimos mensajes - Powered by IBM
 

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
 

Leer las respuestas

#1 Gustavo Larriera [MVP]
27/11/2004 - 01:16 | Informe spam
"El foxero" wrote in message
news:
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 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.

Preguntas similares