Date: Tue, 6 Feb 2001 15:33:58 +0900
From: Kenji Okimoto <who@example.co.jp>
はじめまして、"ゴタ"です。
現在、SQLSERVER2000にて、プロシジャー/トリガーを作成したのですが、
エラー処理を通ってくれません。
具体的には、以下のトリガー内の"差分tblA_saのレコード登録"処理でオブジェクトが
ないエラーが発生した場合、次の行のIF文以降を実行せずに処理がロールバック
されます。
"差分tblA_saのレコード登録"処理の次の行にprint文を入れて上記現象を押さえたの
ですが、どう直せば良いかわかりません。誰か助けてください。
CREATE TRIGGER tblA_trgupd ON tblA
FOR UPDATE
AS SAVE TRANSACTION MyName
--メッセージの抑止
SET NOCOUNT ON
--変数の宣言
DECLARE @cnt int
DECLARE @err int
DECLARE @Doctor_Yakkyoku_CD char (6)
DECLARE @Doctor_Hospital_CD smallint
DECLARE @Doctor_CD smallint
--更新レコード件数の取得
SELECT @cnt = 0
SELECT @cnt = count(*) FROM deleted
--更新レコードが1件の場合
IF(@cnt = 1)
BEGIN
--更新レコード(旧)の取得
SELECT @Doctor_Yakkyoku_CD = Doctor_Yakkyoku_CD,
@Doctor_Hospital_CD = Doctor_Hospital_CD,
@Doctor_CD = Doctor_CD
FROM deleted
--差分tblA_saのレコード登録
INSERT INTO tblA_sa
(Doctor_Yakkyoku_CD,
Doctor_Hospital_CD,
Doctor_CD,
Doctor_DML_Kbn)
VALUES (
@Doctor_Yakkyoku_CD,
@Doctor_Hospital_CD,
@Doctor_CD,
'U')
--レコード登録に失敗した場合
IF(@@ERROR <> 0)
BEGIN
SELECT @err = @@ERROR
ROLLBACK TRANSACTION MyName
RAISERROR('UPDATEトリガー エラー発生',16,127,@err)
RETURN
END
END
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|