トリガーが思うように動かない
初心者です。
SQL SERVER 2012です。
「売上明細」テーブルに、新規行を挿入した時に、「得意先単価マスタ」を更新・または追加したい
CREATE
TRIGGER [dbo].[INSTEAD_OF_INSERT_ON_T_D売上明細] ON [dbo].[T_D売上明細]
INSTEAD OF INSERT
<<省略>>
/* 得意先別単価マスタの更新 */
IF (@column_new_value$19 <> 0)
BEGIN
/* 得意先別単価マスタを参照する */
SET @CURSOR_PARAM_CRSTS_CRSTS_得意先コード = @column_new_value$9
SET @CURSOR_PARAM_CRSTS_CRSTS_納品先コード = @column_new_value$10
SET @CURSOR_PARAM_CRSTS_CRSTS_商品コード = @column_new_value$16
DECLARE
crsTS CURSOR LOCAL SCROLL_LOCKS
FOR
SELECT
dbo.T_M得意先別単価.作成日付,
dbo.T_M得意先別単価.更新日付,
dbo.T_M得意先別単価.得意先コード,
dbo.T_M得意先別単価.納品先コード,
dbo.T_M得意先別単価.商品コード,
dbo.T_M得意先別単価.単価区分,
dbo.T_M得意先別単価.売上単価1,
dbo.T_M得意先別単価.売上単価2,
FROM dbo.T_M得意先別単価
WHERE ((dbo.T_M得意先別単価.得意先コード = @CURSOR_PARAM_CRSTS_CRSTS_得意先コード) AND
(dbo.T_M得意先別単価.納品先コード = @CURSOR_PARAM_CRSTS_CRSTS_納品先コード) AND
(dbo.T_M得意先別単価.商品コード = @CURSOR_PARAM_CRSTS_CRSTS_商品コード))
OPEN crsTS
FETCH NEXT FROM crsTS
INTO
@recTS$作成日付,
@recTS$更新日付,
@recTS$得意先コード,
@recTS$納品先コード,
@recTS$商品コード,
@recTS$単価区分,
@recTS$売上単価1,
@recTS$売上単価2
/* 該当が有った場合は更新する */
IF (@@FETCH_STATUS = 0)
IF (@column_new_value$19 = 1)
UPDATE dbo.T_M得意先別単価
SET dbo.T_M得意先別単価.単価区分 = @column_new_value$19, dbo.T_M得意先別単価.売上単価1 = @column_new_value$22
WHERE CURRENT OF crsTS
ELSE
IF (@column_new_value$19 = 2)
UPDATE dbo.T_M得意先別単価
SET dbo.T_M得意先別単価.単価区分 = @column_new_value$19, dbo.T_M得意先別単価.売上単価2 = @column_new_value$22
WHERE CURRENT OF crsTS
ELSE
IF (@column_new_value$19 = 1)
INSERT INTO dbo.T_M得意先別単価
(
dbo.T_M得意先別単価.得意先コード,
dbo.T_M得意先別単価.納品先コード,
dbo.T_M得意先別単価.商品コード,
dbo.T_M得意先別単価.単価区分,
dbo.T_M得意先別単価.売上単価1
)
VALUES
(
@column_new_value$9,
@column_new_value$10,
@column_new_value$16,
@column_new_value$19,
@column_new_value$22
);
ELSE
IF (@column_new_value$19 = 2)
INSERT INTO dbo.T_M得意先別単価
(
dbo.T_M得意先別単価.得意先コード,
dbo.T_M得意先別単価.納品先コード,
dbo.T_M得意先別単価.商品コード,
dbo.T_M得意先別単価.単価区分,
dbo.T_M得意先別単価.売上単価2
)
VALUES
(
@column_new_value$9,
@column_new_value$10,
@column_new_value$16,
@column_new_value$19,
@column_new_value$22
);
CLOSE crsTS
DEALLOCATE crsTS
<<省略>>
上記のように作成してあるのですが、
すでに同一得意先・納品先・商品のマスタが存在する場合は、更新されます。
ですが、存在しない場合、新規に追加したいのですが、そこがうまく動きません。
何が原因でしょうか?
お礼
返事が大変遅くなり申し訳ありません。 無事できました。 ありがとうございました。