locked
Ayuda con RESTRICCIONES RRS feed

  • Pregunta

  • Al crear una base de datos con el Management Studio, puedo ver en el explorador de objetos las tablas. Puedo agregar columnas, claves y restricciones, entre otras cosas. Estuve buscando ayuda sobre esto último y no encuentro! Quiero saber lo básico, cómo es la sintaxis para esto. En un campo fecha, por ejemplo, intenté poner como restricción fechaNac > '12/12/1879' y no me reconoce.

    ¿alguna ayudita?

    Gabriela
    sábado, 19 de diciembre de 2009 17:46

Respuestas

  •  Yo creo la base de datos y sus tablas de modo visual, con el Management Studio, y cuando voy a la rama de Restricciones (Que depende de la tabla que elijamos), me sale para agregar una nueva ventanita en blanco para escribir la restricción. Yo supongo que hay que poner directamente cosas como (edad > 21) o (peso < 35) pero ¿qué pasa si quiero hacer cosas como por ejemplo, que se ingrese uná cadena de caracteres de como máximo 10 caracteres? ¿O que la fecha de nacimiento sea superior a 10/10/1980? Ese tipo de cosas necesito y no encuentro en ningún lugar
    Es correcto, en el área de texto de la ventana CheckConstraints usted puede poner expresiones como:

    edad > 21
    fecha > '19801010'

    Son las mismas expresiones que usa la cláusula CHECK.

    Como ya le dijo Carlos Sacristan: Si quiere almacenar 10 caracteres, defina la columna con un tipo de caracteres de largo 10. No tiene sentido en ese caso hacer una restricción de integridad.


    Gustavo Larriera Sosa | ascii164.blogspot.com | /*Este mensaje se proporciona tal como es, sin garantías de ninguna clase.*/
    martes, 22 de diciembre de 2009 18:01
    Moderador

Todas las respuestas

  • Este es un ejemplo de los manuales:

    CREATE TABLE CheckTbl (col1 int, col2 int);
    GO
    
    CREATE FUNCTION CheckFnctn()
    RETURNS int
    AS 
    BEGIN
       DECLARE @retval int
       SELECT @retval = COUNT(*) FROM CheckTbl
       RETURN @retval
    END;
    GO
    
    ALTER TABLE CheckTbl
    ADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn() >= 1 );
    GO

    Restricciones CHECK
    http://msdn.microsoft.com/es-es/library/ms188258.aspx

    Gustavo Larriera Sosa | ascii164.blogspot.com | /*Este mensaje se proporciona tal como es, sin garantías de ninguna clase.*/
    sábado, 19 de diciembre de 2009 22:38
    Moderador
  • Es cierto, he leido sobre esto, pero no es lo que busco. Yo creo la base de datos y sus tablas de modo visual, con el Management Studio, y cuando voy a la rama de Restricciones (Que depende de la tabla que elijamos), me sale para agregar una nueva ventanita en blanco para escribir la restricción. Yo supongo que hay que poner directamente cosas como (edad > 21) o (peso < 35) pero ¿qué pasa si quiero hacer cosas como por ejemplo, que se ingrese uná cadena de caracteres de como máximo 10 caracteres? ¿O que la fecha de nacimiento sea superior a 10/10/1980? Ese tipo de cosas necesito y no encuentro en ningún lugar
    Gabriela
    martes, 22 de diciembre de 2009 17:34
  • En http://msdn.microsoft.com/es-es/library/ms179491.aspx hay más ejemplos de restricciones CHECK.

    Por otro lado, si lo que necesitas es que no se introduzcan más de 10 caracteres en un campo, eso no se hace por medio de una restricción, sino en la definición del tipo de datos. En este caso deberías establecerlo a CHAR(10), NCHAR(10), VARCHAR(10) o NVARCHAR(10)
    martes, 22 de diciembre de 2009 17:39
  •  Yo creo la base de datos y sus tablas de modo visual, con el Management Studio, y cuando voy a la rama de Restricciones (Que depende de la tabla que elijamos), me sale para agregar una nueva ventanita en blanco para escribir la restricción. Yo supongo que hay que poner directamente cosas como (edad > 21) o (peso < 35) pero ¿qué pasa si quiero hacer cosas como por ejemplo, que se ingrese uná cadena de caracteres de como máximo 10 caracteres? ¿O que la fecha de nacimiento sea superior a 10/10/1980? Ese tipo de cosas necesito y no encuentro en ningún lugar
    Es correcto, en el área de texto de la ventana CheckConstraints usted puede poner expresiones como:

    edad > 21
    fecha > '19801010'

    Son las mismas expresiones que usa la cláusula CHECK.

    Como ya le dijo Carlos Sacristan: Si quiere almacenar 10 caracteres, defina la columna con un tipo de caracteres de largo 10. No tiene sentido en ese caso hacer una restricción de integridad.


    Gustavo Larriera Sosa | ascii164.blogspot.com | /*Este mensaje se proporciona tal como es, sin garantías de ninguna clase.*/
    martes, 22 de diciembre de 2009 18:01
    Moderador