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

Jak mohu zabránit vkládání duplicitních dat do tabulky serveru SQL?

Za prvé, můžete zabránit tomu, aby se v tabulce někdy vyskytl duplikát, pomocí jedinečného indexu nebo omezení. Index/omezení může fungovat ve shodě s níže uvedenými návrhy. Pokud pouze použijte jedinečný index a ne jedno z níže uvedených řešení, vložení duplicitního záznamu způsobí chybu a budete to muset vyřešit na druhém konci.

Navíc bych pravděpodobně vložil data prostřednictvím uložené procedury, která zkontroluje, zda řádek již existuje. K tomu můžete použít buď SLOUČENÍ prohlášení, jak je znázorněno v tomto pseudokódu:

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

nebo můžete zkontrolovat existenci záznamů a vložit nebo aktualizovat ručně:

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. MySql Query – časové období v rámci časového období

  2. Jak převedu z BLOB na TEXT v MySQL?

  3. Co je špatného na tomto kódu, který používá rozšíření mysql k načítání dat z databáze v PHP?

  4. Obecná chyba:Neshoda verze OS