如何将每行记录更改为新值?

时间:2016-07-07 15:42:24

标签: sql-server sum

我正在使用Microsoft SQL Server Management Studio。

我想将记录的每一行(例如,列ID)与常量值相加(比如50)。

所以这是一个更好的图片:

Click here for the image that i prepared for better understanding of my requirement.

我知道SUM可以用来总结整个列,并在行的末尾出现TOTAL,但是如何用常量值添加每一行的记录呢?

一旦完成总和,我需要做最后一步,即从154到999重置下一个新行的ID(不需要如上所述)。任何人都可以建议我重置主键?

1 个答案:

答案 0 :(得分:1)

迪克,

您可以通过执行DBCC CheckIdent command

轻松更改标识列的下一个值

不幸的是,没有一种简单的方法来更新标识列值。 对于现有记录,我到目前为止所经历的是将所有数据复制到新的临时表中并在此帮助程序表上组织值。然后删除现有表。如下所示,将临时表重命名为原始表名。

如果您尝试删除列的标识属性,SSMS将生成如下脚本

BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_MyTable
    (
    id int NOT NULL,
    value int NULL
    )  ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_MyTable SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.MyTable)
     EXEC('INSERT INTO dbo.Tmp_MyTable (id, value)
        SELECT id, value FROM dbo.MyTable WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.MyTable
GO
EXECUTE sp_rename N'dbo.Tmp_MyTable', N'MyTable', 'OBJECT' 
GO
COMMIT

我知道这听起来不是更新标识列值的简单方法。