1

对于 2010 年访问的每个人,我需要在日期的年份部分添加 10 年,日期以 yyyy-mm-dd 格式存储。以下是我想尝试但我不知道如何使用的查询SQL Server 的回滚功能呢。Visityear 是 varchar 数据类型。

update myTable
set admitdate=dateadd(yyyy,10,admitdate)
where visitYear='2010'
4

2 回答 2

2

在 SQL Server 2008 中,所有查询都是隐式提交的事务的一部分。我假设你可以使用 dateadd 函数,你所拥有的看起来是正确的。因此,要修改以允许回滚,您可以执行以下操作 - 尽管不确定何时/为什么要回滚,但需要添加该逻辑。

BEGIN TRANSACTION addDateYears
update myTable
set admitdate=dateadd(yyyy,10,admitdate)
where visitYear='2010'

/* IF SOMETHING ROLLBACK TRANSACTION addDateYears */

COMMIT TRANSACTION addDateYears
于 2012-05-14T18:50:16.387 回答
1

如果你想在你的桌子上做:

BEGIN TRANSACTION

UPDATE dbo.myTable
SET admitdate = DATEADD(YEAR, 10, admitdate)
WHERE visitYear = '2010'

SELECT visityear, admitdate 
FROM dbo.myTable
WHERE visitYear = '2010'

ROLLBACK TRANSACTION    

当然 - 如果您想实际应用更新,请使用COMMIT而不是ROLLBACK....

于 2012-05-14T18:48:42.650 回答