sql >> Databáze >  >> RDS >> Sqlserver

Spusťte, abyste zabránili vkládání duplicitních dat dvou sloupců

Něco jako toto:

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

To je jen pro vložení, možná budete chtít také zvážit aktualizace.

Aktualizovat

Jednodušším způsobem by bylo pouze vytvořit jedinečné omezení na stole, což jej také vynutí pro aktualizace a odstraní potřebu spouštěče. Stačí udělat:

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

a pak budete v podnikání.



  1. Jak porovnat data mezi dvěma databázemi v PostgreSQL?

  2. Připojte se v Oracle SQL

  3. Mohu vrátit zpět transakci, kterou jsem již provedl? (ztráta dat)

  4. Změna řazení serveru SQL Server na velikost nerozlišující velká a malá písmena?