2017-08-25 7 views
0

私は、挿入ステートメントの条件をチェックするこのトリガーを持っています。それは正しいメッセージを表示しますが、値を追加しません(msgが "正常に追加された"ことを示していますが)。誰もが問題があることを知っていますか?トリガーが新しい値をテーブルに挿入しないのはなぜですか?

insert into messages values('2017-05-01', 'how are you', '426564774', '201827364') 

は「成功しまし追加」を返す、とテーブルに追加する必要がありますが、それだけでメッセージを示しています。たとえば

CREATE TRIGGER trg_SentMessage_Insteadof 
ON messages 
INSTEAD OF INSERT 
AS 
BEGIN 
    IF (EXISTS (SELECT inserted.* 
       FROM inserted 
       LEFT OUTER JOIN matchs AS m ON (inserted.sentFrom = m.userID1 
               AND inserted.sentTo = m.userID2) 
              OR (inserted.sentFrom = m.userID2 
               AND inserted.sentTo = m.userID1) 
       WHERE (m.interesting1 = 0 AND m.interesting2 = 0))) 
     PRINT 'Succesfully added' 
    ELSE 
    BEGIN 
     ROLLBACK TRANSACTION 
     PRINT 'You can't do that!' 
    END 
END 

は、私が実行したとき。

+6

トリガーの代わりに宣言する場合は、挿入する必要があります。とにかくトリガーの代わりにする必要はありません。そして、左の結合は 'where'のために内部結合です。 –

+0

私はwhere節の条件を必要とします:\、しかし、あなたは私が私の代わりに必要としないことは何ですか?もし私が必要なものがあれば、挿入された値をどうやってチェックすることができますか? – reeena11

+1

「挿入後」が必要です。挿入後、挿入が完了する前に発生します。 'の代わりに'が使われていますトリガーで何が行われたのですか? –

答えて

1

実際には値を挿入していません。 INSTEAD OF INSERTは挿入が起こらないようにするため、条件を確認した後にprintステートメントの前に挿入する必要があります。 何かのようなもの https://stackoverflow.com/a/27659693/6715484

+0

if文の後に 'Insert into messages values( ''、 ''、 '' ')'を追加する必要がありますか?どちらかが動作しないためです – reeena11

関連する問題