4 soluciones cuando la restricción única le impide insertar un nuevo registro en SQL Server

Comparte ahora:

Si no pudo insertar un nuevo registro en una tabla debido a la restricción de unicidad, no deje de leer este artículo. Te ayudará a resolver este problema.

En este artículo, presentaremos 4 métodos para resolver el problema cuando no puede insertar un nuevo registro porque viola la restricción única de la tabla en SQL Server.

Un caso real:

Ahora veamos un caso real. Tenemos una base de datos llamada "Producto" y hay una tabla llamada "DataNumenProducto ”en la base de datos. Hay dos campos en la tabla, es decir, "ProductId" y "ProductName", con los tipos de datos "int" y "varchar" respectivamente. Y "ProductId" es una clave principal con restricción única.

Actualmente hay algunos registros en la tabla, como se muestra a continuación:Registros en la tabla "DataNumenProducto"

Figura 1 Registros en la tabla "DataNumenProducto"

Suponiendo que hay dos DBA para la base de datos, es decir, Jim y Tom. Un día, Jim eliminó el primer registro de la tabla, como se muestra a continuación:

DELETE FROM DataNumenProduct
WHERE ProductId=1;

El segundo día, Tom insertó un nuevo registro en la tabla, que tiene la misma clave principal con el registro eliminado, como se muestra a continuación:

INSERT INTO DataNumenProduct
VALUES(1,'DataNumen OutLook Repair');

Entonces, nuestra tabla tiene los siguientes registros, como se muestra a continuación:

Registros actualizados en la tabla "DataNumenProductos ”

Figura 2 Registros actualizados en la tabla "DataNumenProductos ”

Ahora, si Jim quiere restaurar el registro eliminado a la tabla, violará la restricción única de la clave primaria "ProductId". En tal caso, podemos usar una de las soluciones a continuación para resolver el problema.

Solución alternativa 1: modifique la clave principal del nuevo registro para evitar conflictos

Podemos modificar la clave primaria del registro que se insertará a un nuevo valor que sea diferente a los de todos los registros existentes en la tabla. Tome el caso anterior como ejemplo, para que se inserte el registro, podemos modificar el valor de la clave principal de 1 a 5. Luego, podemos restaurar el nuevo registro generado a la tabla, como se muestra a continuación:

INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');

A continuación se muestran los registros finales en la tabla:Récords finales en la tabla “DataNumen Productos ”

Figura 3 Registros finales en la tabla “DataNumen Productos ”

Solución alternativa 2: modifique la clave principal del registro existente para evitar conflictos

  1. Primero, necesitamos actualizar el valor de la clave principal del registro existente que puede causar conflicto, como se muestra a continuación:
UPDATE DataNumenProduct
SET ProductId = 6
WHERE ProductId = 1;

A continuación se muestran los registros actualizados en la tabla:

Registros actualizados en la tabla "DataNumen Productos ”

Figura 4 Registros actualizados en la tabla "DataNumen Productos ”

  1. Luego, podemos restaurar el registro eliminado a la tabla, como se muestra a continuación:
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair ');

Ahora veamos la versión final, como se muestra a continuación:

Registros finales en la tabla "DataNumen Productos ”

Figura 5 Registros finales en la tabla "DataNumen Productos ”

Solución alternativa 3: deshabilite el tempo de restricción únicorarily a través de SQL

  1. Para resolver el problema, podemos eliminar la restricción de clave primaria "pk" en el tempo de la tabla.rarily, como se muestra a continuación:
ALTER TABLE DataNumenProduct
DROP CONSTRAINT pk;
  1. Luego, podemos volver a agregar el registro eliminado a la tabla, como se muestra a continuación:
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

Ahora veamos los registros en la tabla:

Registros actualizados en la tabla "DataNumen Productos ”

Figura 6 Registros actualizados en la tabla "DataNumen Productos ”

  1. Luego, dado que dos registros tienen los mismos valores de clave principal, debemos modificar uno de ellos para evitar conflictos, como se muestra a continuación:
UPDATE DataNumenProduct SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. Por último, volvemos a agregar la restricción de clave primaria "pk" a la tabla, como se muestra a continuación:
ALTER TABLE DataNumenProduct
ADD CONSTRAINT pk PRIMARY KEY(ProductId);

Ahora hay algunos registros en la tabla, como se muestra a continuación:

Contenido actualizado en la tabla "DataNumen Productos ”

Figura 7 Contenido actualizado en la tabla "DataNumen Productos ”

Solución alternativa 4: deshabilite el tempo de restricción únicorarily vía SQL Server Estudio de gestión:

  1. En primer lugar, eliminamos la restricción de clave primaria "pk" en la tabla a través de la GUI, como se muestra a continuación:

Elimine la restricción de clave principal "pk" a través de la GUI

Figura 8 Elimine la restricción de clave principal "pk" a través de la GUI

  1. Luego insertamos el registro eliminado en caso real en la tabla, como se muestra a continuación.
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

Ahora hay algunos registros en la tabla, como se muestra a continuación:

Contenido actualizado en la tabla "DataNumen Productos ”

Figura 9 Contenido actualizado en la tabla "DataNumen Productos ”

  1. Luego modificamos el valor de la clave principal del registro existente en la tabla, como se muestra a continuación:
UPDATE DataNumenProduct
SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. Por último, volvemos a agregar la restricción de clave primaria "pk" a la tabla a través de la GUI, como se muestra a continuación:Vuelva a agregar la restricción de clave principal "pk" a través de la GUI

Figura 8 Vuelva a agregar la restricción de clave principal "pk" a través de la GUI

Resolver SQL Server Corrupción de la base de datos

Aparte de las restricciones únicas, SQL Server corrupción También es un problema muy común que molesta a los administradores de bases de datos. Normalmente podemos usar SQL Server comandos incorporados para resolver las corrupciones. Sin embargo, si no funcionan, entonces podemos recurrir a algún tercero SQL Server herramientas de recuperación de datos.

Introducción del autor:

Jim Hu es un experto en recuperación de datos en DataNumen, Inc., que es el líder mundial en tecnologías de recuperación de datos, incluyendo Reparación de acceso y dbf reparar productos de software. Para más información visite www.datanumen.com

Comparte ahora:

Los comentarios están cerrados.