use restricciones únicas para evitar registros duplicados
]]En las operaciones de la base de datos, a menudo es necesario garantizar la singularidad de combinaciones de columnas específicas. Por ejemplo, considere la siguiente tabla:
ID | Name | Active | PersonNumber
agregue restricciones únicas a las tablas existentes
]] Para agregar una restricción única a una tabla existente, puede usar uno de los siguientes métodos:
1.
ALTER TABLA DBO.YOURTABLEname Agregue la restricción uq_yourtableName unique (columna1, column2);
ALTER TABLE dbo.yourtablename
ADD CONSTRAINT uq_yourtablename UNIQUE(column1, column2);
crea un índice único uq_yourtableName
En dbo.yourtableName (column1, column2); use desencadenantes para evitar la inserción repetida
CREATE UNIQUE INDEX uq_yourtablename
ON dbo.yourtablename(column1, column2);
Crear gatillo dbo.blockduplateYourtable En dbo. tuurtable En lugar de insertar COMO COMENZAR Establecer nocount; Si no existe ( Seleccionar 1 De insertado como yo Inner Únete a dbo. tuurtable como t En i.column1 = t.column1 Y i.column2 = T.Column2 ) COMENZAR Insertar dbo.yourtable (columna1, columna2, ...) Seleccione Columna1, columna2, ... de insertado; FIN DEMÁS COMENZAR Impresión 'No se realizó ninguna acción. '; FIN FIN; IR
Ejemplo: Implementar la singularidad para Personnumber y Active
CREATE TRIGGER dbo.BlockDuplicatesYourTable
ON dbo.YourTable
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (
SELECT 1
FROM inserted AS i
INNER JOIN dbo.YourTable AS t
ON i.column1 = t.column1
AND i.column2 = t.column2
)
BEGIN
INSERT dbo.YourTable(column1, column2, ...)
SELECT column1, column2, ... FROM inserted;
END
ELSE
BEGIN
PRINT '未执行任何操作。'; -- 更友好的提示信息
END
END;
GO
use tempdb; IR Crear tabla dbo.person ( ID int identidad (1,1) clave primaria, Nombre nvarchar (32), Bit activo, Personnumber int ); IR Alter tabla dbo.person Agregar restricción UQ_PERSON UNICA (Personnumber, Active); IR
Ahora, cualquier intento de inserción que viole la restricción única fallará con un mensaje de error, asegurando que no haya un registro duplicado con el mismo número de personal y estados activos.
imprimir 'No se realizó ninguna acción. La instrucción 'USE tempdb;
GO
CREATE TABLE dbo.Person
(
ID INT IDENTITY(1,1) PRIMARY KEY,
Name NVARCHAR(32),
Active BIT,
PersonNumber INT
);
GO
ALTER TABLE dbo.Person
ADD CONSTRAINT uq_Person UNIQUE(PersonNumber, Active);
GO
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3