sql >> Database teknologi >  >> RDS >> Sqlserver

Trigger for at forhindre indsættelse for duplikerede data af to kolonner

Noget som dette:

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

Det er bare for at indsætte, du vil måske også overveje opdateringer.

Opdater

En enklere måde ville være blot at skabe en unik begrænsning på bordet, dette vil også håndhæve den for opdateringer og fjerne behovet for en trigger. Bare gør:

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

og så er du i gang.



  1. SQL:Hvad er bedre en bit eller et tegn(1)

  2. Sporing af PostgreSQL med perf

  3. Hvordan jeg gemmer og henter et billede på min server i en java webapp

  4. LOAD DATA INFIL Fejlkode:13