Bases de Datos - Eliminar una fila a partir de la clave primaria

 
Vista:

Eliminar una fila a partir de la clave primaria

Publicado por antonio (6 intervenciones) el 01/06/2008 11:12:38
Hola. Imaginemos que tenemos una tabla donde la clave primaria es la union de dos atributos:

CREATE TABLE PERSONA(
nombre STRING
apellido STRING
CLAVE PRIMARIA(nombre, apellido)
)

Como podria hacer una sentencia de eliminacion de una fila a partir de la clave primaria? es decir, si me pasan p.e. "jorgediaz", ¿como hago el "DELETE FROM ..." para que me elimine la fila?

Espero que me podais ayudar.
Gracias ;)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Eliminar una fila a partir de la clave primaria

Publicado por Franklin Gamboa (188 intervenciones) el 02/06/2008 15:53:18
Hola

delete from persona where CLAVE = 'jorgediaz'

saludos,

Franklin Gamboa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar una fila a partir de la clave primaria

Publicado por antonio (6 intervenciones) el 04/06/2008 10:18:38
Gracias por tu respuesta.
Pero CLAVE no es un atributo de la tabla persona, en oracle o mysql seria algo así:

CREATE TABLE PERSONA(
nombre STRING
apellido STRING
Primary key (nombre, apellido)
)

¿Alguien me ayuda?
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar una fila a partir de la clave primaria

Publicado por Franklin Gamboa (188 intervenciones) el 04/06/2008 16:23:45
Ante todo te insto que le pongas una llave primaria numérica a tus tablas, esto por orden y para evitar errores por registros repetidos (en mi pais que somos apenas 6 millones de personas habemos 20 Franklin Gamboa y de esos, dos que tienen mi otro apellido igual por lo que ocurrencias como esta harían que tu sistema diera errores de llave duplicada), puedes usar el número de seguro social o generar tu propio número usando un sequence de Oracle para este fin (o un Identity de MySQL ya que hasta donde se MySQL no soporte Sequences, podrías investigarlo si te interesa).

Tambien desde la perspectiva de que la llave primaria de un registro NO DEVERÍA cambiar durante el ciclo de vida de un sistema y un operario del sistema puede cometer errores al escribir el nombre o el apellido, requiriendo su posterior modificacion (escenario que puede generar problemas en el sistema si no se había previsto esto en tiempo de diseño)

En el caso que expones arriba, la sentencia delete sigue siendo sencilla, ya que lo que recibe es nombre+apellido en una variable varchar, la base de datos nada mas concatena ambos valores para sacar el hash y detectar si existen duplicados, fuera de eso para la base de datos son dos columnas aparte donde puedes leer y escribir información, entonces si yo recibo el nombre y el apellido concatenado simplemente debo concatenar las columnas de la base de datos para hacer la comparación.

delete from persona where nombre || apellido = 'franklingamboa'

En caso que el sistema reciba las columnas como dos parámetros aparte, simplemente debes validarlas por aparte.

delete from persona where nombre = 'franklin' and apellido = 'gamboa'

Y si al final decidieras crear un nuevo campo que fuera la identidad (Llave Primaria) de esta tabla, sería un delete comparando por ese campo nada mas.

Espero haberte ayudado.

Saludos,

Franklin Gamboa M.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar una fila a partir de la clave primaria

Publicado por antonio (6 intervenciones) el 05/06/2008 15:49:42
Hola!
Gracias!! Ahora lo tengo más claro. Saludos :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar