Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wyzwalacz zapobiegający wstawianiu dla zduplikowanych danych dwóch kolumn

Coś takiego:

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 tylko do wstawienia, warto rozważyć też aktualizacje.

Aktualizacja

Prostszym sposobem byłoby po prostu utworzenie unikalnego ograniczenia w tabeli, co wymusi je również w przypadku aktualizacji i usunie potrzebę wyzwalania. Po prostu zrób:

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

a wtedy będziesz w biznesie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zresetuj AutoIncrement w SQL Server po usunięciu

  2. pyodbc.connect() działa, ale nie sqlalchemy.create_engine().connect()

  3. Rozwiązywanie problemów z wydajnością procesora SQL Server

  4. Przechowywanie i analiza dokumentów w systemie plików Windows za pomocą wyszukiwania semantycznego SQL Server — część 2

  5. Jak usunąć zadanie agenta programu SQL Server w Azure Data Studio