0

after トリガーを作成する必要があります。(厳密には AFTER トリガーのみ)。私は正しい軌道に乗っていると思いますが、正しく実行できないようです。重複がある場合だけでなく、常にトリガーを実行し、すべての挿入ステートメントでエラーメッセージを表示するようです。これは私が持っているものです。

    CREATE TRIGGER Copies
    ON table
    AFTER INSERT

    AS
    Declare @number int 
    Set @number = (Select Count(*) from inserted)

    If @number >0
       (
       SELECT *
       FROM table O
       JOIN inserted AS i 
       ON t.q_id = i.q_id 

       WHERE O.username = i.username 
        AND t.q_id = i.q_id
       )

    BEGIN
            RAISERROR ('Already answered', 16, 1);
            ROLLBACK TRANSACTION;
            RETURN 
    END;
    GO

Ps。トリガー用で返信しないでください。ありがとう :)

4

2 に答える 2

0
If (NOT EXISTS(..code to test for existance ))
 BEGIN    
            RAISERROR ('Already answered', 16, 1);
            ROLLBACK TRANSACTION;
            RETURN 
 END
于 2013-09-12T02:37:47.713 に答える
0

を使用してこの新しいトリガーを試してくださいcount

CREATE TRIGGER Copies
ON table
AFTER INSERT

AS
DECLARE @Counter int
SELECT @Counter = COUNT(*)
FROM table T
JOIN inserted AS i 
    ON T.username = i.username 
    AND t.q_id = i.q_id
GROUP BY T.username, t.q_id 

If (@Counter > 1) 
BEGIN
        RAISERROR ('Already answered', 16, 1);
        ROLLBACK TRANSACTION;
        RETURN 
END;
GO
于 2013-09-12T03:30:43.460 に答える