我正在使用Microsoft SQL Server Management Studio。
我想用一个常量值(比如50
)对记录的每一行(比如第 ID
列)求和。
所以这里有一个更好的图片:
单击此处查看我准备的图像,以便更好地了解我的要求。
我知道SUM
可以用来对整列求和并在行尾显示一个TOTAL
,但是用常量值添加每一行的记录怎么样?
完成总和后,我需要执行最后一步,即将下一个新行的 ID(不需要像上面那样求和)从 154 重置为 999。任何人都可以建议我重置主键吗?
Dick,
您可以通过执行 DBCC CheckIdent 命令轻松更改标识列的下一个值
遗憾的是,没有一种简单的方法来更新标识列值。对于现有记录,到目前为止,我所经历的是将所有数据复制到新的临时表中,并在此帮助程序表上组织值。然后删除现有表。按照以下步骤将临时表重命名为原始表名称。
如果尝试删除列的标识属性,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
我知道这听起来不是更新标识列值的简单方法。