sql >> データベース >  >> RDS >> Sqlserver

SQL Server テーブルへの重複データの挿入を防ぐにはどうすればよいですか?

    まず、一意のインデックスまたは制約を使用して、テーブルで重複が発生するのを防ぐことができます。インデックス/制約は連携して機能します 以下の提案とともに。 のみ 以下の解決策のいずれかではなく、一意のインデックスを使用すると、重複レコードを挿入するとエラーがスローされ、反対側でそれを処理する必要があります。

    さらに、行が既に存在するかどうかを確認するストアド プロシージャを介してデータを挿入する可能性があります。これを行うには、MERGE のいずれかを使用できます この擬似コードに示すように、ステートメント:

    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. 疑問符を含むPostgreSQLJSON(B)演算子を使用するにはどうすればよいですか? JDBC経由

    2. SQL Server:NEWID()は常に一意のIDを提供しますか?

    3. PostgresNOSQLjsonデータのjson配列の合計を取得します

    4. .net アプリケーションでのメモリ リーク