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

mysql problema en modificaciones de la base de datos

Estas en el tema de mysql problema en modificaciones de la base de datos en el foro de Mysql en Foros del Web. Hola! Tengo un problema al hacer algunas variaciones de una base de datos si me pudierais ayudar Eliminar la restricción que controla los valores permitidos ...
  #1 (permalink)  
Antiguo 13/10/2013, 10:15
 
Fecha de Ingreso: octubre-2013
Ubicación: madrid
Mensajes: 28
Antigüedad: 10 años, 6 meses
Puntos: 0
mysql problema en modificaciones de la base de datos

Hola! Tengo un problema al hacer algunas variaciones de una base de datos si me pudierais ayudar

Eliminar la restricción que controla los valores permitidos para el atributo
sexo.

alter table alumnos drop index sexo;

(da error)

Cambiar la clave primaria de Profesor al nombre y apellidos.

(no se como plantearlo)

Crear una tabla (de uso temporal) llamada NOMBRE_DE_ALUMNOS que
tenga un solo atributo (NOMBRE_COMPLETO) de tipo cadena de caracteres y con el contenido de la tabla ALUMNOS en esos campos. Observe que no hay restricción de clave primaria para esta tabla. Inserte una fila en la tabla ALUMNOS , y observe si se modifica la nueva tabla.

select nombre_completo=nombre+""+apellido1+""+apellido2,d ni,direccion,sexo, fecha_nacimiento,curso into nombre_alumnos from alumnos;

(da error)
  #2 (permalink)  
Antiguo 13/10/2013, 13:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: mysql problema en modificaciones de la base de datos

Vamos por parte, cuando dices:
Cita:
(da error)
No nos sirve absolutamente para nada. Necesitamos saber qué error te da. Cuál es el mensaje, el código numérico del error, algo.
Incluso sería bueno que nos des qué datos estás usando y en qué contexto.
Cualquier cosa, menos decir solamente "da error".

Segundo:
Todo lo que describes tiene el aspecto de un trabajo práctico, y si ese es el caso, no hacemos trabajos prácticos ajeno. A nadie.
Podemos guiarte, pero tienes que mostrarnos exactamente qué estás intentando hacer y cómo. Y de todos modos lo tienes que hacer tu. No te regalaremos la solución, aunque podemoa ayudarte a entender cómo obtenerla.

Luego, si quieres cambiar una PK por otra, tienes que recordar que no pueden existir dos PK en una misma tabla al mismo tiempo, por lo que para definir una nueva primero debes eliminar la anterior. Y también, como la PK siempre debe ser sobre valores únicos en la tabla, debes verificar que los campos a usar no tienen repeticiones de valor, es decir, que dos registros no posean iguales valores para el mismo conjunto de columnas a usar como PK.

Finalmente, y yendo a algo concreto, pones esto como ejemplo de algo que intentas hacer:
Código MySQL:
Ver original
  1. select nombre_completo=nombre+""+apellido1+""+apellido2,d ni,direccion,sexo, fecha_nacimiento,curso
  2. into nombre_alumnos
  3. from alumnos;
No queda claro qué es, pero parece que intentas combinar en un único valor de cadena de texto, un grupo de datos, para ponerlos en algo que parece una variable.
Si eso es lo que quieres hacer, tiene dos errores: 1) No se concatenan cadenas de texto de esa forma en MySQL, se usa CONCAT() para eso, cosa que peudes leer en el manual de referencia onloine de la web oficial. 2) Las variables definidas como lo haces sólo se usan de ese modo en un stored procedure, por lo que sin ver el contexto es difícil saber si está bien o mal del todo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/10/2013, 01:00
 
Fecha de Ingreso: octubre-2013
Ubicación: madrid
Mensajes: 28
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: mysql problema en modificaciones de la base de datos

Añadi una restriccion para sexo de esta manera:
sexo varchar(1) check (sexo="H" or sexo="M")
El error que especifica es que compruebe que la columna exista error(1091)
Creo que no me coge la restriccion quizas deberia plantear un trigger?

Y de la otra cuestion que me dices me salta error que la variable nombre_alumnos no esta declarada error(1327)

Solo me gustaria orientacion para intentar sacar el resultado como tu dices no voy a pedir que me realiceis la practica, gracias por los consejos
  #4 (permalink)  
Antiguo 14/10/2013, 05:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: mysql problema en modificaciones de la base de datos

Cita:
Iniciado por skreal Ver Mensaje
Añadi una restriccion para sexo de esta manera:
sexo varchar(1) check (sexo="H" or sexo="M")
El error que especifica es que compruebe que la columna exista error(1091)
Creo que no me coge la restriccion quizas deberia plantear un trigger?

Y de la otra cuestion que me dices me salta error que la variable nombre_alumnos no esta declarada error(1327)

Solo me gustaria orientacion para intentar sacar el resultado como tu dices no voy a pedir que me realiceis la practica, gracias por los consejos
No existen los CHECK en MySQL. No están implementados, y simplemente los ingnorará cuando los pongas en el CREATE TABLE, aunque hacerlo en un ALTER como único cambio, probablemente dispare un error.

Un trigger es una mala idea, no se deberían usar para validaciones. En todo caso esa restricción deberías realizala en la aplicación, y no en la base.

También debes tener en cuenta que para MySQL, usar comilas (") o apóstrofos (') puede ser diferente en función de la confiiguracion de servidor. Normalmente las comillas se usan para encerrar identificadores de objetos de base (columnas, tablas, etc), y no para cadenas de texto, caso para el que aplican los apóstrofos.

Respecto a lo de la variable, pues es correcto, si no la declaraste, o no lo hiciste en el ámbito de existencia de esa sentencia (un SP, o un TRIGGER) no existe.
Sobre eso debemos aclarar que
Cita:
SET @var = 0;
SET var = 0;
son dos variables distintas para MySQL.

Postea el código completo donde estés usando esa sentencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: bbdd, sql
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 10:10.