我有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
}
}
感谢。