none
Evitar duplicidad de datos al actualizar registro desde apsx RRS feed

  • Pregunta

  • Hola muy buenas noches, tengo una pregunta quisiera saber como puedo evitar que se inserten datos repetidos al momento que estoy actualizando un campo ojo: no estoy insertando si no es ala hora de actualizarlos cacho los valores de un gridview a unos texboxt pero quiero saber como puedo comparar que los datos de mi registro custro por ejemplo no puedan ser igual al de mi registro tres y asi. 
    viernes, 27 de enero de 2017 5:22

Respuestas

  • Lo más fiable es que la integridad de datos se fuerce desde el servidor de base de datos. Ponle una restricción de unicidad en la base de datos sobre la columna o columnas que no admitan repeticiones. Si intentas grabar un dato repetido, el servidor arrojará un error. Este error puedes interceptarlo con try...catch y presentarle al usuario el correspondiente mensaje informativo.

    Si no quieres o no puedes hacer esto, puedes evitar las repeticiones de datos desde el programa aspx haciendo la grabación en dos fases: primero envías al servidor un SELECT que intente buscar los datos que quieres grabar. Si los encuentra, entonces informas que ese registro ya existe. Si no los encuentra, entonces puedes proceder a grabar sin riesgo de que se duplique. Esa Select seguida del Update deberías hacerla dentro de una transacción, para evitar la (pequeña) posibilidad de que dos usuarios simultáneos intenten grabar justo a la vez y uno duplique el registro del otro.

    viernes, 27 de enero de 2017 7:30
  • hola

    pero de la entidad que insertas\actualizas cuales serian los campos que defines como unique en la tabla?

    porque no veo correcto que debas validar todos los campos, sino solo algunos que no deberian poder duplicarse, por ejemplo un campo Code o nombre podrias querer que sean unicos

    en ese caso podrias definirlos unique en la tabla y tratar el error o podrias usar

    Validar si un registro ya existe en una base de datos

    analiza el ejemplo que planteo en el link

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 27 de enero de 2017 13:28

Todas las respuestas

  • Lo más fiable es que la integridad de datos se fuerce desde el servidor de base de datos. Ponle una restricción de unicidad en la base de datos sobre la columna o columnas que no admitan repeticiones. Si intentas grabar un dato repetido, el servidor arrojará un error. Este error puedes interceptarlo con try...catch y presentarle al usuario el correspondiente mensaje informativo.

    Si no quieres o no puedes hacer esto, puedes evitar las repeticiones de datos desde el programa aspx haciendo la grabación en dos fases: primero envías al servidor un SELECT que intente buscar los datos que quieres grabar. Si los encuentra, entonces informas que ese registro ya existe. Si no los encuentra, entonces puedes proceder a grabar sin riesgo de que se duplique. Esa Select seguida del Update deberías hacerla dentro de una transacción, para evitar la (pequeña) posibilidad de que dos usuarios simultáneos intenten grabar justo a la vez y uno duplique el registro del otro.

    viernes, 27 de enero de 2017 7:30
  • hola

    pero de la entidad que insertas\actualizas cuales serian los campos que defines como unique en la tabla?

    porque no veo correcto que debas validar todos los campos, sino solo algunos que no deberian poder duplicarse, por ejemplo un campo Code o nombre podrias querer que sean unicos

    en ese caso podrias definirlos unique en la tabla y tratar el error o podrias usar

    Validar si un registro ya existe en una base de datos

    analiza el ejemplo que planteo en el link

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 27 de enero de 2017 13:28