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

Sql 在触发器中使用IF语句进行测试,sql,if-statement,triggers,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

我需要测试刚刚添加的行的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
有人能帮忙吗?

只需将检查移到where子句:

您可以使用一条语句来执行此操作:

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

什么数据库系统,哪个版本??SQL只是结构化查询语言-一种被许多数据库系统使用的语言,但不是一种数据库产品。。。但是触发器是高度特定于供应商的-所以我们真的需要知道您使用的是什么数据库系统。。。。请根据MySQL更新标签?Microsoft SQL Server?博士后?DB2?非常抱歉,SQL 2008女士
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')