我有几张桌子:
AUTOMOBILE
AutoId Make Model Color
BATCH
BatchId SaleDate
INVENTORY
InventoryId AutoId BatchId CustomerName(string) ParkingSlipId
PARKING
ParkingSlipId SlipStatus(String)
当前,INVENTORYtable或BATCH表中没有行。我想用SQLServerManagementStudio中的查询或存储过程在清单中创建一些伪数据。要做到这一点,我只需获取AUTOMOBILE表的前10行并使用AutoId from AUTOMOBILE作为INVENTORY.AutoId. 我还需要为库存中的每个条目创建一个新行。我将使用BATCH.BatchId 作为INVENTORY.BatchId. 客户名称现在可以是“弗雷德”这个词。对于parkingslip,我可以从SlipStatus为“Empty”的parkingslip取任意一行,使用parkingslip并将状态更改为“Full”。
我一直在处理这个问题,但收效甚微。例如,我可以使用:
INSERT [BATCH]
VALUES (GETDATE())
DECLARE @tempLoadBatchId bigint
SELECT @tempLoadBatchId = @@IDENTITY
我可以在下一次插入(到库存中)时使用templaadbatchid
INSERT [INVENTORY] (AutoId BatchId CustomerName ParkingSlipId)
VALUES (3, @tempLoadBatchId, "Fred",77);
UPDATE [PARKING] set SlipStatus= 'FullBoat' where SlipId = 77
注意这只是一行,我只是硬编码了AutoId。
我想把它自动化。使用游标似乎是一种方法,这当然是一种选择(这些表很小,性能不会有问题),但我也想知道如何在没有游标的情况下做到这一点。
谢谢,戴夫
作为对评论的回应,我添加了更多的信息。我可以备份和附加整个数据库,如果这是有用的。我想StackOverflow会允许的。
AutoId Make Model Colour
1 Ford Taurus White
2 GM Cadilac Silver
3 Toyota Prius Blue
4 Honda Pilot Green
5 Kia Sonata Yellow
这是现在的停车位
停车滑行状态
1个空的
2空
3空
4空
5空
7空
8空
对于AUTO中的每一行,我想在BATCH中创建一个新条目,然后使用BatchId创建一个新的库存条目。在这个新的库存条目中,我想使用AUTO中的行并分配一个parkingId,并将PARKING中相应的parkingId更改为FULL。完成所有这些操作后,表BATCH、INVENTORY和PARKING应该如下所示:
PARKING
ParkingSlipId SlipStatus
1 Full
2 Full
3 Full
4 Full
5 Full
6 Empty
7 Empty
8 Empty
BATCH
BatchId SaleDate
1 2018-09-15 00:00:00.000
2 2018-08-20 00:00:00.000
3 2018-06-22 00:00:00.000
4 2018-09-12 00:00:00.000
5 2018-07-01 00:00:00.000
INVENTORY
InventoryId AutoId BatchId ParkingId CustomerName
1 1 1 1 Fred
2 2 2 2 Mary
3 3 3 3 Fred
4 4 4 4 Ted
5 5 5 5 James
我能提供更多的信息吗?或者以不同的格式?非常感谢!