sql >> Database >  >> RDS >> Sqlserver

Trigger om invoeging te voorkomen voor dubbele gegevens van twee kolommen

Zoiets als dit:

CREATE TRIGGER MyTrigger ON dbo.MyTable
AFTER INSERT
AS

if exists ( select * from table t 
    inner join inserted i on i.name=t.name and i.date=t.date and i.id <> t.id)
begin
    rollback
    RAISERROR ('Duplicate Data', 16, 1);
end
go

Dat is alleen om in te voegen, misschien wilt u ook updates overwegen.

Bijwerken

Een eenvoudigere manier zou zijn om gewoon een unieke beperking op de tafel te creëren, dit zal het ook voor updates afdwingen en de noodzaak voor een trigger wegnemen. Gewoon doen:

ALTER TABLE [dbo].[TableName]    
ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED
(
    [Name], [Date]
)

en dan ben je in zaken.



  1. Automatisch SQLite-queryresultaten openen in Excel

  2. Java.sql.SQLException ophalen:bewerking niet toegestaan ​​nadat ResultSet is gesloten

  3. Selecteer xml-elementwaarde in Oracle

  4. Script alle gegevens uit de SQL Server-database