Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как мога да предотвратя вмъкването на дублиращи се данни в таблица на SQL Server?

Първо, можете да предотвратите възникването на дубликат в таблицата, като използвате уникален индекс или ограничение. Индекс/ограничение може да работи съгласувано с предложенията по-долу. Ако само използвайте уникален индекс, а не едно от решенията по-долу, вмъкването на дублиран запис ще изведе грешка и ще трябва да се справите с това от другата страна.

Освен това вероятно бих вмъкнал данните чрез съхранена процедура, която проверява дали редът вече съществува. За да направите това, можете да използвате или ОБЕДИВАНЕ израз, както е показано в този псевдокод:

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,...

или можете да проверите за съществуването на записите и да вмъкнете или актуализирате ръчно:

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. Дървовидна йерархия на SQL Server и вложени набори с дублирани идентификатори на записи

  2. Как да посочите местоположението на файловете с данни и регистрационните файлове при създаване на база данни в SQL Server

  3. Актуализирайте стойността на първичния ключ с помощта на рамката на обекта

  4. Съвети за намаляване на сложността на вашия SQL сървър

  5. ако е в рамките на CTE?