none
Crear una restriccion RRS feed

  • Pregunta

  • Buenos dias , en mi base de datos tengo un campo de tipo sexo y es de tipo char(10) el cual quiero que solo contenga dos valores:

    Masculino y Femenino, alguien ,me podria decir como puedo crear esta restriccion con el diseñador de tablas

    miércoles, 30 de septiembre de 2015 16:09

Respuestas

  • Hola Gspindola,

    ¿No basta con un tipo char(1) que admita valores F y M?. 

    Prefiero hacer la restricción por código T-SQL:

    ALTER TABLE MiTabla ADD CONSTRAINT CK_TipoSexo CHECK (TipoSexo IN ('Masculino', 'Femenino'));

    Donde, TipoSexo es la columna que haces mención de tipo char(10).

    Puedes hacer lo mismo a través del diseñador. Clic secundario sobre la tabla > Diseño. En la barra de herramientas superior escoges la opción [Administrar restricciones Check] (7mo botón). En la ventana haces clic en Agregar y luego en la propiedad Expresión escribes

    TipoSexo IN ('Masculino', 'Femenino')

    Coméntanos como te fue

    miércoles, 30 de septiembre de 2015 16:39

Todas las respuestas

  • Hola Gspindola,

    ¿No basta con un tipo char(1) que admita valores F y M?. 

    Prefiero hacer la restricción por código T-SQL:

    ALTER TABLE MiTabla ADD CONSTRAINT CK_TipoSexo CHECK (TipoSexo IN ('Masculino', 'Femenino'));

    Donde, TipoSexo es la columna que haces mención de tipo char(10).

    Puedes hacer lo mismo a través del diseñador. Clic secundario sobre la tabla > Diseño. En la barra de herramientas superior escoges la opción [Administrar restricciones Check] (7mo botón). En la ventana haces clic en Agregar y luego en la propiedad Expresión escribes

    TipoSexo IN ('Masculino', 'Femenino')

    Coméntanos como te fue

    miércoles, 30 de septiembre de 2015 16:39
  • Personalmente te diria que la restriccion tendria que ir en el front end y no el backend, si insertas por medio de un SP, puedes poner un filtro aqui.
    miércoles, 30 de septiembre de 2015 18:04
  • Personalmente te diria que la restriccion tendria que ir en el front end y no el backend, si insertas por medio de un SP, puedes poner un filtro aqui.

    ¿Y qué tal en ambos lados?

    Si bien es cierto yo soy de los que insiste en que la lógica de negocios nunca debería bajar a base de datos, insisto también en que cualquier mecanismo que asegure la consistencia de los datos debería ser implementado en la base de datos y reforzado desde la aplicación. Una restricción debería ser validada desde la aplicación como también reforzada en la base de datos, ¿por qué?, pues porque no siempre deberías asumir que la entrada de datos será la aplicación, ¿Qué pasa si se hace desde una migración? ¿Qué pasa si se inserta datos manualmente?

    miércoles, 30 de septiembre de 2015 18:37
  • Es un tema un poco largo.

    Personalmente te diria que crearas una tabla catalogo y que nunca ingreses datos manualmente, tampoco te restringiria a F o M (por varias cuestiones que van desde legales hasta culturales).

    El control lo marca el proyecto y como es llevado puede ser en uno o en ambos lados pero eso ya depende mucho del lider del proyecto y el diseño de la aplicación.

    miércoles, 30 de septiembre de 2015 18:44