Trabajando con una base de datos de SQL Server similar a la siguiente:

der

En un proyecto de ASP.NET tenía mi DAL (archivo xsd) en el cual agregué un TableAdapter con la siguiente consulta:

SELECT
Alumno.IdAlumno,
Alumno.Nombre, Tarea.Concepto
FROM
Alumno INNER JOIN Tarea
ON Alumno.IdAlumno = Tarea.IdAlumno

Al tratar de utilizar los datos en una página ASPX mediante un ObjectDataSource, me aparecía este error:

No se pudieron habilitar las restricciones. Una o varias filas contienen valores que infringen las restricciones NON-NULL, UNIQUE o FOREIGN-KEY.

En inglés:

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints

Nota: Esto ocurre normalmente en consultas con JOINS. Antes de seguir las instrucciones que voy a dar, intenta borrar tu TableAdapter y volverlo a crear, puede ser que hayas modificado el tamaño de algún campo en la base de datos y no lo hayas ajustado en el xsd. Si no se arregló, continúa leyendo.

Investigando, encontré, que si quito la llave Alumno.IdAlumno de la consulta se soluciona el problema, sin embargo no lo puedo hacer porque en este caso específico necesito la llave para pasarla como parámetro en un vínculo a otra página.

Como podrás ver, la llave IdAlumno está tanto en la tabla Alumno (llave primaria), como en Tarea (llave foránea). Para solucionar el problema, utiliza en tu consulta la llave foránea (Tarea.IdAlumno) en vez de la primaria (Alumno.IdAlumno), las dos llevan siempre el mismo valor, y solucionarás el problema, así:

SELECT
Tarea.IdAlumno,
Alumno.Nombre, Tarea.Concepto
FROM
Alumno INNER JOIN Tarea
ON Alumno.IdAlumno = Tarea.IdAlumno

11 comentarios sobre “No se pudieron habilitar las restricciones. Una o varias filas contienen valores que infringen las restricciones NON-NULL, UNIQUE o FOREIGN-KEY.

  1. No necesariamente debe ser asi. Solo declara los campos antes de asingar el resultado de tu consulta a tu TableAdapter y listo.
    De esa manera, puedes seguir utilizando tu campo de tabla primaria.
    Saludos.

  2. El problema fue que modifique el tamaño de algún campo como lo indicas, lo quite y lo volví a agregar y funciono. Gracias fue de mucha ayuda.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


dos + 9 =