私はトリガーを初めて使用し、REQ_L
特定のパラメーターを満たすレコードがそこに挿入されたときにテーブル ( ) を更新するトリガーの設定に取り組んでいます。更新する値REQ_L
は、一致するキーを持つ別のテーブルから取得されます。
create table REQ_L (item_number varchar(20),
commodity_code varchar(20),
vendor_id varchar(20),
item_source varchar(20));
create table XREF_C (item_number varchar(20),
commodity_code varchar(20),
xref_type varchar(20));
レコードが に挿入されたときREQ_L
に、トリガーの基準を満たしていれば、をキーとして使用してCOMMODITY_CODE
からREQ_L
を更新します。COMMODITY_CODE
XREF_C
ITEM_NUMBER
ロックを解除し、挿入されたテーブルを使用するように切り替えました。良いニュースは、もはやデッドロックではありません。悪いニュースは、テーブルがまだ更新されていないことです。更新された SQL トリガー試行:
CREATE TRIGGER WBM
ON REQ_L
AFTER INSERT
AS
IF EXISTS (SELECT * FROM inserted WHERE VENDOR_ID = 'W7315'
AND ITEM_SOURCE = 'XML'
AND COMMODITY_CODE NOT LIKE '%-%')
BEGIN
UPDATE REQ_L
SET COMMODITY_CODE = (SELECT distinct CODE_2
FROM XREF_C xc, inserted i
WHERE i.ITEM_NUMBER = xc.CODE_1
AND xc.XREF_TYPE = 'WBM')
FROM XREF_C xc, inserted i
WHERE i.ITEM_NUMBER = xc.CODE_1
END
GO