作爲初學者,我正在尋求幫助,試圖在每次出現其他訂單時創建訂單。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