none
Restringir que aparezca un registro especifico dos veces en una columna RRS feed

  • Pregunta

  • Hola, tengo una duda, tengo una tabla "presupuesto" y otra que se llama "estados" en la tabla estados tengo lo siguiente:

    codEstado     descripcion

    1                   formacion

    2                   revision

    3                   aprobacion

    4                  ejecucion

    en la tabla presupuesto, tengo lo siguiente:

    idpresupuesto          estado          fecha

    1                                     1              01/01/2016

    2                                     1              01/01/2017

    3                                     4              01/01/2018

    mi pregunta es, habrá una forma de como restringir en la base de datos que no pueda existir en la tabla presupuesto en el campo estado el 4 más de una vez


    Mario Ruiz Carrillo

    viernes, 4 de noviembre de 2016 23:03

Respuestas

  • MarioRuizCarrillo,

    Puedes crear una restricción de unicidad:

    CREATE UNIQUE NONCLUSTERED INDEX AK_NombreIndice ON 
        dbo.Presupuesto (estado) WHERE estado = 4;
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 4 de noviembre de 2016 23:27

Todas las respuestas

  • Puedes utilizar un Trigger,  por ejemplo

    CREATE Trigger TCU_Presupuesto ON presupuesto FOR INSERT, UPDATE
    AS
    BEGIN
    IF EXISTS(SELECT Estado FROM presupuesto WHERE Estado=4 
    GROUP BY Estado HAVING Count(*) > 1)
    BEGIN
    RAISERROR('Ya existe un estado 4',16,1)
    ROLLBACK
    END
    END

    viernes, 4 de noviembre de 2016 23:17
  • MarioRuizCarrillo,

    Puedes crear una restricción de unicidad:

    CREATE UNIQUE NONCLUSTERED INDEX AK_NombreIndice ON 
        dbo.Presupuesto (estado) WHERE estado = 4;
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 4 de noviembre de 2016 23:27