从SQL中的表中复制单行

时间:2014-12-01 14:37:52

标签: sql sql-server sql-server-2012-express

我必须在某些条件下从表中复制单行。

假设这是我的表:

ProductName ProductCount Isactive latest 
AA              1          1       1 
Bb              5          1       1

现在,假设我要编辑第一行;我将要做的是我不会编辑第一行本身,但我想复制该特定行,然后我想更新该行。

在上面的场景中,我想更新ProductCount,然后我希望输出为:

ProductName ProductCount Isactive latest 
AA              1          1       0 
Bb              5          1       1
AA              6          1       1 

我们怎么做?

2 个答案:

答案 0 :(得分:3)

使用可以使用Instead of Update Trigger执行此操作,但是,您希望在主表中保留历史数据,这有点奇怪。

这只是一个想法,你可能需要改变一下才能使它适用于所有场景

CREATE TABLE tests
  (
     ProductName  VARCHAR(50),
     ProductCount INT,
     Isactive     INT,
     latest       INT
  )

INSERT tests
VALUES ('AA',1,1,1 ),
       ('Bb',5,1,1)

go

CREATE TRIGGER [DBO].[TRG_tests_UPD]
ON tests
INSTEAD OF UPDATE
AS
  BEGIN
      INSERT INTO tests
                  (ProductName,ProductCount,Isactive,latest)
      SELECT ProductName,ProductCount,Isactive,1
      FROM   inserted

      UPDATE A
      SET    latest = 0
      FROM   tests a
             JOIN deleted D
               ON a.ProductName = D.ProductName
  END 

UPDATE tests
SET    ProductName = 'Prdp'
WHERE  ProductName = 'AA' 

答案 1 :(得分:1)

首先插入然后进行更新..它必须分两步......