こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

トリガからストアド実行について

あるテーブルに追加処理を行った場合、ストアドを実行を実行したく、
トリガを作成してみましたが、
『トランザクションはトリガーで終了しました。バッチは中止されました。』という
エラーが出てしまい困っています。

エラー内容で検索してもあまり出てこないので、
初歩的且つ、根本的に間違っているかと思うのですが、
初めて作成した為、なにがいけないのかも検討がつかない為、
ご教示頂きたく、投稿させて頂きます。

○トリガ
ALTER TRIGGER [dbo].[TRIG_SEND_MAIL] ON [dbo].[SEND_MAIL_INFO] FOR INSERT
AS
begin
EXEC dbo.mail_test
end


○目的としては対象テーブルを実行するとトリガを発動し、【dbo.mail_test】を起動させたい

insert into SEND_MAIL_INFO (PROFILE_NAME,SEND_FLG) values ('AAAAAA','0')

上記SQL文を実施するとエラーなってしまいますので
どうすればよいのか具体的な対処方法をご教示頂きたく、
何卒宜しくお願い申し上げます。

投稿日時 - 2014-04-21 18:01:29

QNo.8563432

困ってます

質問者が選んだベストアンサー

問題はdbo.mail_test の権限なのでは?
このストアドは単独では実行できるのですよね。であればまずこのストアドの中身をそのままトリガーに記述して実行できるか試してみることです。

メールを飛ばす機能?だと思いますが、その場合権限は重要ですよ。

投稿日時 - 2014-04-21 18:09:12

補足

【mail_test】は単独実行出来ます。
権限とありますが、実行方法は管理者権限でSSMSにログインし、
単純に対象テーブルにInsert文を実行しているだけなんですが、
『トランザクションはトリガーで終了しました。バッチは中止されました』というエラーが発生しています。

ちなみにトリガーの記載の仕方には問題ありませんでしょうか?

投稿日時 - 2014-04-22 09:25:31

お礼

問題は解決しました。
原因は入れ子のトランザクションだったようでした。

投稿日時 - 2014-04-22 15:40:24

ANo.1

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問