我需要测试刚刚添加的行的PACK_TYPE
列,然后根据该列中的内容插入另一个表。我决定用触发器做这件事。
这是我的,但没有工作:
CREATE TRIGGER insert_INTO_PART_DIM
ON Qubiscan
FOR INSERT
AS
BEGIN
IF PACK_TYPE = 'SELL'
INSERT INTO PART_DIMENSION (PART_ID, SELL_PACK)
SELECT part_id, 1
FROM INSERTED
IF PACK_TYPE = 'INNER'
INSERT INTO PART_DIMENSION (PART_ID, INNER_PACK)
SELECT PART_ID, 1
FROM INSERTED
END
END
GO
有人可以帮忙吗?
答案 0 :(得分:0)
只需将检查移至where
子句:
INSERT INTO PART_DIMENSION (PART_ID, SELL_PACK)
SELECT part_id, 1
FROM INSERTED
WHERE PACK_TYPE = 'SELL'
INSERT INTO PART_DIMENSION (PART_ID, INNER_PACK)
SELECT PART_ID, 1
FROM INSERTED
WHERE PACK_TYPE = 'INNER'
您可以使用单一声明:
INSERT INTO PART_DIMENSION (PART_ID, SELL_PACK, INNER_PACK)
SELECT part_id,
CASE WHEN PACK_TYPE = 'SELL' THEN 1 END,
CASE WHEN PACK_TYPE = 'INNER' THEN 1 END
FROM INSERTED
WHERE PACK_TYPE IN('SELL', 'INNER')