【发布时间】:2013-05-10 15:19:42
【问题描述】:
作为初学者,我正在寻求帮助,以便在每次出现另一个订单时尝试创建订单。
我在表dbo.OrderType 中有3 种订单类型,列OrderTypeID, OrderTypeName:
OrderTypeID OrderTypeName
---------------------------
1 Assignment
2 LoanRelease
3 DocumentRetrieval
对于每个带有OrderTypeName = Assignment 的订单,我需要创建一个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 或@ 987654338@。
有人可以帮我开始这个逻辑和过程吗?
这是我开始创建的触发器,但是由于语法错误,我无法执行它,并且仍然需要弄清楚如何不仅为每个订单创建新的 Order 和 OrderTypeID(3) OrderTypeID(1)
还要用ActivityID = 1创建一个新的OrderActivity
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行显然不是。Customer有点模棱两可。您可能想要该表中的新行,或者您可能想要重新使用现有行(参数可以通过任何一种方式进行) - 您可以指定您想要的吗? -
是的,一个新的 Order(OrderID(autoincrement) 和 OrderTypeID(3)) 由 DocumentRetrieval 的 OrderTypeID 组成,为每个 OrderTypeID(1)"Assignment" 的订单创建。因此,正在创建的新订单将具有与其创建对象相同的 LoanNumber 和 CustomerID。因此,当与 OrderActivity 表相关时,OrderID 将是从正在创建的新订单创建的 OrderID,接收到的 ActivityID(1)。基本上为每个“assignment”类型的订单创建一个新的“DocumentRetrieval”类型的订单。
标签: sql sql-server tsql stored-procedures triggers