SQL服务器触发器与其他表交互

时间:2014-11-10 16:41:39

标签: sql

我有3张桌子。这些是:

   PART TABLE                     CUSTOMER TABLE               ORDER TABLE
* PART_ID                      * CUST_ID                    * ORDER_ID
  PART_CODE                      CUST_CODE                    ORDER_DATE
  PART_NAME                      CUST_NAME                    CUST_ID
  PURCHASE_PRICE                 TOTAL_ORDER_QUANTITY         PART_ID
  SALES_PRICE                                                 QUANTITY
                                                              PRICE

所以我有几个问题:

1)当我将订单记录插入订单表时,零件表必须具有该订单的零件ID。否则触发器应该回滚。

2)如果ORDER表中至少有1个零件订单记录,则该零件不能删除。

这2个操作应该与触发器一起使用。我怎么能做这两个操作?

我对第一个问题进行了以下查询,但是没有用。

CREATE TRIGGER TRG_IF_NOT_EXIST_PART
ON  [dbo].[ORDER]
AFTER INSERT
AS 
BEGIN
    SET IDENTITY_INSERT [dbo].[ORDER] ON
    INSERT INTO [dbo].[ORDER]
    SELECT *
    FROM inserted II
        WHERE EXISTS (SELECT * 
                        FROM PART P 
                            WHERE P.PART_ID = II.PART_ID)
END

第一次操作的伪代码(这是我想在编程术语中做的)

boolean isFoundAtPartTable = false;
FOR EVERY ROW OF inserted TABLE {
    FOR EVERY ROW OF PART TABLE {
        IF (PART.PART_ID = inserted.PART_ID) {
            isFoundAtPartTable = true;
            break;
        }
    }
    if (isFoundAtPartTable) {
        // so I can insert this record from inserted table to ORDER TABLE
    }
}

感谢。

0 个答案:

没有答案