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

[SOLUCIONADO] Restringir valores

Estas en el tema de Restringir valores en el foro de Mysql en Foros del Web. Buenas de nuevo: En este caso me han pedido que en la columna (turnos) de la tabla (camareros) limite los valores a "mañana, tarde y ...
  #1 (permalink)  
Antiguo 19/12/2015, 07:50
 
Fecha de Ingreso: noviembre-2015
Ubicación: Las Palmas (Canarias)
Mensajes: 14
Antigüedad: 8 años, 4 meses
Puntos: 0
Restringir valores

Buenas de nuevo:

En este caso me han pedido que en la columna (turnos) de la tabla (camareros) limite los valores a "mañana, tarde y noche" teniendo en cuenta que cada camarero puede tener más de un turno.

No puedo usar CHECK, así que supongo que tengo que usar un TRIGGER. Pero no sé cuál es la sentencia correcta.

Agradecería un poco de ayuda.
  #2 (permalink)  
Antiguo 19/12/2015, 08: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: Restringir valores

En MySQL no puedes usar TRIGGERS para suplir la falta de CHECK.. Restricciones de ese tipo solo pyeden simularse parcialmente usando la clausula SIGNAL para crear errores funcionales personalizados. Pero sería hacer fallar la inserción o actualización, y no corregirlo.
Puede que Te sirvan para asignar valores límite., pero tienes que tener en cuenta que todas las demás restricciones de la tabla se disparan antes que el trigger.
Te recomiendo empezar leyendo el manual de referencia antes que nada.
__________________
¿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 19/12/2015, 10:54
 
Fecha de Ingreso: noviembre-2015
Ubicación: Las Palmas (Canarias)
Mensajes: 14
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Restringir valores

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En MySQL no puedes usar TRIGGERS para suplir la falta de CHECK.. Restricciones de ese tipo solo pyeden simularse parcialmente usando la clausula SIGNAL para crear errores funcionales personalizados. Pero sería hacer fallar la inserción o actualización, y no corregirlo.
Puede que Te sirvan para asignar valores límite., pero tienes que tener en cuenta que todas las demás restricciones de la tabla se disparan antes que el trigger.
Te recomiendo empezar leyendo el manual de referencia antes que nada.
Entonces para esta función se podría usar "set" como tipo de datos.
Es decir, modificar la tabla pero cambiando la columna turno a un dato tipo "set" y poniendo las tres únicas opciones.
De esta forma:
Código SQL:
Ver original
  1. ALTER TABLE camareros
  2. MODIFY turno SET('mañana','tarde','noche') NOT NULL;

No lo recuerdo bien, pero creo que el "set" sirve para que solo sean posibles los valores dados y que si se añade otro valor además de esos se rechaza.

Última edición por gnzsoloyo; 19/12/2015 a las 11:19
  #4 (permalink)  
Antiguo 19/12/2015, 11:20
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: Restringir valores

ENUM sería un tipo más adecuado.
__________________
¿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: restringir, tabla
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 06:34.