2013-05-15 41 views
0

作为初学者,我正在寻求帮助,试图在每次出现其他订单时创建订单。SQL Server:创建一个过程/触发器为每种类型的另一个订单创建新订单

我有表dbo.OrderType 3种阶类型的OrderTypeID, OrderTypeName列:

OrderTypeID OrderTypeName 
--------------------------- 
    1  Assignment 
    2  LoanRelease 
    3  DocumentRetrieval 

对于每一个订单与​​我需要创建一个OrderOrderTypeName = 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

我相信我需要为此创建一个过程,因为它涉及到每一个OrderOrderType = 1创建一个新的OrderOrderType = 3,每一个新的秩序必须建立有receivedActivityID = 1

有人可以帮我开始这个的逻辑和过程吗?

这里是一个创建触发器我已经开始用,但是,我不能让它由于语法错误执行,并且仍然需要弄清楚如何创建不只是新OrderOrderTypeID(3)为每个订单与OrderTypeID(1)

而且还创造了一个新的OrderActivityActivityID = 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 
+2

发布你有什么(即使它包含错误),我们会尽力帮助你通过它:) –

+0

我假设'Order'和'OrderActivity'行应该重复。我认为'Activity'和'OrderType'行显然不是。 “客户”一词稍微含糊不清。您可能需要该表中的新行,或者您可能需要重新使用现有的行(可以使用任何方式参数) - 您可以指定您想要的行吗? –

+0

是的,由OrderTypeID(1)“Assignment”的每个Order创建的由OrderTypeID(用于DocumentRetrieval)组成的新Order(OrderID(autoincrement)和OrderTypeID(3))。因此,创建的新订单将具有与正在创建的订单相同的LoanNumber和CustomerID。因此,当与OrderActivity表相关时,OrderID将是从正在创建的新订单创建的OrderID,具有用于接收的ActivityID(1)。基本上为每个“分配”类型的订单创建一个新的“DocumentRetrieval”类型的订单。 – Brody

回答

0
create trigger trg_Order on dbo.tblorder 
after insert 
as 
BEGIN 
if exists (select 1 from inserted where orderTypeId = 1) 
    BEGIN 
    insert into dbo.tblorder 
    select OrderId,3,LoanNumber, customerid 
    from inserted 
    where OrderTypeId = 1 

    insert into dbo.tblorderActivity 
    select OrderId,1,sysdatetime() 
    from inserted 
    where OrderTypeId = 1 
END 
END 

这是这是最后成功地做什么,我需要的代码。

相关问题