2013-05-15 85 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 

這是這是最後成功地做什麼,我需要的代碼。

相關問題