更新列并插入一行

时间:2015-02-25 04:33:07

标签: sql sql-server tsql sql-server-2008-r2

我正在努力更新列ListPrice,将25添加到名称为All-Purpose Bike Stands的当前值,并将SellStartDate更新为明天的日期在表Production.Product中。

使用更新后的价格,我希望使用新的Production.ProductListHistory在表ListPrice中插入一行,并在明天更新名为Production.ProductHistory的{​​{1}}列中的行#39;日期也是如此。

表格定义区域如下:

EndDate

Production.Product

ProductID int PK Name varchar(50) ProductNumber nvarchar(25) ListPrice money SellStartDate datetime SellEndDate

Production.ProductListHistory

这是我到目前为止继续给我错误的内容:

ProductID int PK FK
StartDate datetime PK
EndDate datetime
ListPrice money

1 个答案:

答案 0 :(得分:1)

如果我理解了您的问题,那么您的UPDATE应该是这样的

您还可以创建一个表变量来存储已删除的定价,然后将其插入到历史记录表

DECLARE @MyTableVar table(
ProductID int NOT NULL,
StartDate datetime,
EndDate datetime,
ListPrice money);

UPDATE AdventureWorks2008R2.Production.Product 
Set ListPrice = 25 + AdventureWorks2008R2.Production.Product.ListPrice
OUTPUT inserted.ProductID,
       inserted.SellStartDate,
       inserted.SellEndDate,
       deleted.ListPrice
INTO @MyTableVar 
where AdventureWorks2008R2.Production.Product.Name Like 'All-Purpose%'
AND Listprice = AdventureProduct.Production.Listprice