作为初学者,我正在寻求帮助,试图在每次出现其他订单时创建订单。SQL Server:创建一个过程/触发器为每种类型的另一个订单创建新订单
我有表dbo.OrderType
3种阶类型的OrderTypeID, OrderTypeName
列:
OrderTypeID OrderTypeName
---------------------------
1 Assignment
2 LoanRelease
3 DocumentRetrieval
对于每一个订单与我需要创建一个Order
与 OrderTypeName = DocumentRetrieval
下面是我相信我所需要的表,
dbo.tblOrder
个柱:OrderId, OrderTypeID, LoanNumber
,和CustomerID
dbo.tblOrderActivity
色谱柱:OrderID, ActivityID, ActivityDate
dbo.tblActivity
列ActivityID, ActivityName
ActivityID ActivityName
------------------------
1 Received
2 Keyed
3 Printed
4 Delivered
dbo.tblCustomer
列CustomerID, CustomerName
我相信我需要为此创建一个过程,因为它涉及到每一个Order
与OrderType = 1
创建一个新的Order
与OrderType = 3
,每一个新的秩序必须建立有received
或ActivityID = 1
。
有人可以帮我开始这个的逻辑和过程吗?
这里是一个创建触发器我已经开始用,但是,我不能让它由于语法错误执行,并且仍然需要弄清楚如何创建不只是新Order
和OrderTypeID(3)
为每个订单与OrderTypeID(1)
而且还创造了一个新的OrderActivity
与ActivityID = 1
create trigger trg_Order ON dbo.tblOrder
AFTER INSERT
AS
BEGIN
UPDATE dbo.tblOrder
IF exists (select 1 from inserted where OrderTypeId = 1)
BEGIN
INSERT INTO dbo.tblOrder
SELECT OrderID,3,LoanNumber,CustomerID
FROM inserted
WHERE OrderTypeID = 1
END
END
发布你有什么(即使它包含错误),我们会尽力帮助你通过它:) –
我假设'Order'和'OrderActivity'行应该重复。我认为'Activity'和'OrderType'行显然不是。 “客户”一词稍微含糊不清。您可能需要该表中的新行,或者您可能需要重新使用现有的行(可以使用任何方式参数) - 您可以指定您想要的行吗? –
是的,由OrderTypeID(1)“Assignment”的每个Order创建的由OrderTypeID(用于DocumentRetrieval)组成的新Order(OrderID(autoincrement)和OrderTypeID(3))。因此,创建的新订单将具有与正在创建的订单相同的LoanNumber和CustomerID。因此,当与OrderActivity表相关时,OrderID将是从正在创建的新订单创建的OrderID,具有用于接收的ActivityID(1)。基本上为每个“分配”类型的订单创建一个新的“DocumentRetrieval”类型的订单。 – Brody