SQL Server - Restricciones en una tabla

 
Vista:

Restricciones en una tabla

Publicado por Carolina (10 intervenciones) el 27/12/2017 23:27:49
Hola amigos! tengo una consulta, yo tengo una tabla que tiene pasajeros de una habitacion, de los cuales uno y solo un pasajero por habitacion tiene que ser titular (No puede haber mas de un titular por habitacion)
Se puede hacer una restriccion check que contemple por base de datos esta situación?
Mi tabla se llama hmv_fichas_ingreso y ahi entre otros campos tengo el campo id_habitacion, el campo id_pasajero, y el campo titular ('S' ó 'N') lo que yo tengo que hacer es que haya un solo titular por cada habitacion
Lo puedo hacer con alguna constraint? no se no me sale! intente hacerlo con un trigger pero no hubo caso
MUCHAS GRACIAS POR LA AYUDA!!!!!!!!!!!!!!!

Ah! estoy trabajando con Power Builder 12.5 , SQL Server 2014 y en windows 10
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Restricciones en una tabla

Publicado por Isaias (4558 intervenciones) el 27/12/2017 23:35:28
Si solo UNO, puede ser el titular en la habitacion, coloca un campo que tenga el id del pasajero, simple
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

Restricciones en una tabla

Publicado por carolina (10 intervenciones) el 28/12/2017 13:37:24
Hola Isaias: gracias por tu respuesta rapida!!!!!! Pero no me soluciona el problema, haber por ahi no me explique demasiado.En mi sistema, hay un datawindow que trae los datos de la habitacion supongamos que la habitacion tiene 3 pasajeros, y con un radiobutton hago que el usuario marque cual es el titular, lo que pasa es que si me marcan que hay mas de 1 titular ahi se me complica, bueno yo lo puedo controlar por el sistema, pero quería saber si de alguna forma podía poner alguna restriccion en la base de datos para que, si el usuario me marca mas de un titular salte un error en vez de sacar el cartel y controlarlo en el sistema....pero me parece que es como imposible,,,,,,,,un millon de gracias!!!!!!!!!!!!!
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
Imágen de perfil de Javier
Val: 111
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Restricciones en una tabla

Publicado por Javier (45 intervenciones) el 28/12/2017 23:18:40
Creo que te estas complicando la existencia tu solo, es demasiado sencillo que en el sistema pongas una validación para que solo se enviar un titular, en lugar de ir a checar la BD y recibir una respuesta.
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
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Restricciones en una tabla

Publicado por Isaias (4558 intervenciones) el 29/12/2017 23:04:48
Insisto (perdon), pero si quieres que la BASE DE DATOS lo controle, como te dije, coloca un campo del ID del pasajero en tu tabla de habitaciones que sera el titular, entonces la base, NO ADMITIRIA mas de un titular.

Como Javier, creo que estas complicando demasiado la solucion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Alberto
Val: 3
Ha disminuido su posición en 8 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Restricciones en una tabla

Publicado por Alberto (1 intervención) el 29/12/2017 10:06:50
Crea un indice único sobre la columna:
1
CREATE UNIQUE INDEX hmv_fichas_ingreso_id_habitacion  ON hmv_fichas_ingreso (id_habitacion);
No se si se admite un nombre tan largo como hmv_fichas_ingreso_id_habitacion para el indice, si no es así deberás buscar otro nombre.
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