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

2列の重複データの挿入を防ぐためのトリガー

    このようなもの:

    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
    

    これは挿入用です。更新も検討することをお勧めします。

    更新

    より簡単な方法は、テーブルに一意の制約を作成することです。これにより、更新に対しても制約が適用され、トリガーが不要になります。実行するだけです:

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

    そうすればあなたはビジネスになります。



    1. スタンドアロンMoodleをクラスター化されたデータベースのスケーラブルなセットアップに移行する方法

    2. PostgreSQLクエリで行番号を表示するにはどうすればよいですか?

    3. 解決済み:MicrosoftOffice365バージョン2009はデータベースアプリケーションを破壊する可能性があります

    4. アイテムxにアクセスできるように文字列を分割するにはどうすればよいですか?