如何在一些條件下整個表生成update語句?例如,我有表TSQL生成更新語句,條件
,我想指定日期(本例中'3/16/2016'
),併產生類似下面的更新
UPDATE TableName SET ColumnValue = 30 AND ModifiedDate = '2016-03-17' WHERE Id = 2
是否會有指定的日期之後更多的變化,我想爲這些更改生成所有更新。
有一些簡單的解決辦法還是我通過一些定製C#
腳本有腳本這一切呢?
如何在一些條件下整個表生成update語句?例如,我有表TSQL生成更新語句,條件
,我想指定日期(本例中'3/16/2016'
),併產生類似下面的更新
UPDATE TableName SET ColumnValue = 30 AND ModifiedDate = '2016-03-17' WHERE Id = 2
是否會有指定的日期之後更多的變化,我想爲這些更改生成所有更新。
有一些簡單的解決辦法還是我通過一些定製C#
腳本有腳本這一切呢?
如果你只是想生成更新語句,你可以做這樣的事情:
declare @afterDate date = '20160316';
select update_statements = 'update table t set columnvalue = '
+convert(varchar(10),columnvalue)
+', modifieddate = '''
+replace(convert(varchar(10),modifieddate,120),'-','')+''''
+' where id = '+convert(varchar(10),id)+';'
from t
where modifieddate > @afterdate;
rextester演示:http://rextester.com/MZQ68677
回報:
+------------------------------------------------------------------------------+
| update_statements |
+------------------------------------------------------------------------------+
| update table t set columnvalue = 30, modifieddate = '20160317' where id = 2; |
+------------------------------------------------------------------------------+
如果你有2個相同的表,需要更新基於另一個表中的特定時間戳(@date)後發梗,那麼你可以使用下面的查詢修改中的一個表。
UPDATE T1
SET T1.ColumnValue=T2.ColumnValue,T1.ModifiedDate=T2.ModifiedDate
FROM Table1 T1 inner join Table2 T2 on T1.ID=T2.ID
WHERE T2.ModifiedDate>[email protected]
這使觸發器來跟蹤表格的所有更新。基於表結構,您可以在跟蹤表中添加所需的列。
CREATE TABLE EMP(ID int, NAME VARCHAR(20), SALARY MONEY)
CREATE TABLE TrackUpdate (Id int identity, updatestmt varchar(500), DateCreated datetime)
GO
INSERT INTO EMP
VALUES
(1, 'A', 10),(2, 'E',40),(3,'B',5),(4,'F',40),(5,'I',50)
GO
ALTER TRIGGER TR_EMP ON EMP
INSTEAD OF UPDATE
AS
BEGIN
declare @Name varchar(10)
declare @Salary MONEY
SELECT @Name=Name,@Salary=Salary FROM inserted
insert into TrackUpdate values ('update Emp SET E.Name='''[email protected]+''', '+'E.Salary='+CAST(@Salary as varchar(20)),getdate())
update E SET E.Name=I.Name, E.Salary=I.Salary
FROM EMP E inner join inserted I on I.ID=E.ID
END
update EMP set Name='D' where ID=4
select updatestmt from TrackUpdate
--drop table EMP
--drop table TrackUpdate
我們需要更多的細節來回答這個問題。就像你想要更新哪些行,從哪裏獲得數據,就像那樣。 –
我需要爲某些日期後更改的行生成更新語句。 (創建導出文件) – Muflix