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

Jak mogę zapobiec wstawianiu zduplikowanych danych do tabeli programu SQL Server?

Po pierwsze, możesz zapobiec występowaniu duplikatu w tabeli, używając unikatowego indeksu lub ograniczenia. Indeks/ograniczenie może działać razem z poniższymi sugestiami. Jeśli tylko użyj unikalnego indeksu, a nie jednego z poniższych rozwiązań, wstawienie zduplikowanego rekordu spowoduje błąd i będziesz musiał sobie z tym poradzić po drugiej stronie.

Dodatkowo prawdopodobnie wstawiłbym dane za pomocą procedury składowanej, która sprawdza, czy wiersz już istnieje. Aby to zrobić, możesz użyć MERGE oświadczenie, jak pokazano w tym pseudokodzie:

create procedure MyProcedure
(
    @Name nvarchar(100),
    ...
)
as

merge MyTable
using
(
    select @Name,...
) as source (Name, ...)
on MyTable.Name = source.Name
when not matched then
    insert (Name,...) values (source.Name,...)
when matched then
    update set Name = @Name,...

lub możesz sprawdzić istnienie rekordów i wstawić lub zaktualizować ręcznie:

create procedure MyProcedure
(
    @Name nvarchar(100),
    ...
)
as

    if not exists (select * from MyTable where Name = @Name)
    begin
        insert into MyTable (Name,...) values (@Name,...)
    end
    else
    begin
            update MyTable
            set ...
            where Name = @Name
    end


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zaktualizować mój schemat bazy danych SQL Server?

  2. Jak z utworzonych tabel mogę zrobić tabelę harmonogramu dla instruktora?

  3. Używanie SQL Server Integration Services (SSIS) do wypełniania rekordów QuickBooks

  4. Optymalizacja zapytań SQL — Jak określić, kiedy i czy jest potrzebna

  5. SQL — liczba procentowa