在触发器中使用IF语句进行测试

时间:2015-07-06 17:55:29

标签: sql if-statement triggers

我需要测试刚刚添加的行的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

有人可以帮忙吗?

1 个答案:

答案 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')