对于 2010 年访问的每个人,我需要在日期的年份部分添加 10 年,日期以 yyyy-mm-dd 格式存储。以下是我想尝试但我不知道如何使用的查询SQL Server 的回滚功能呢。Visityear 是 varchar 数据类型。
update myTable
set admitdate=dateadd(yyyy,10,admitdate)
where visitYear='2010'
对于 2010 年访问的每个人,我需要在日期的年份部分添加 10 年,日期以 yyyy-mm-dd 格式存储。以下是我想尝试但我不知道如何使用的查询SQL Server 的回滚功能呢。Visityear 是 varchar 数据类型。
update myTable
set admitdate=dateadd(yyyy,10,admitdate)
where visitYear='2010'
在 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
如果你想在你的桌子上做:
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
....