在 SQL Server 中将标识列重置为零?

发布于 2024-10-08 12:38:26 字数 89 浏览 8 评论 0原文

如何在 SQL Server 中将表的 Identity 列重置为零?

编辑:

我们如何使用 LINQ to SQL 来做到这一点?

How can I reset the Identity column of a table to zero in SQL Server?

Edit:

How can we do it with LINQ to SQL ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

轮廓§ 2024-10-15 12:38:26
DBCC CHECKIDENT (MyTable, RESEED, NewValue)

您还可以执行截断表,但是,当然,这也会从表中删除所有行。

要通过 L2S 执行此操作:

db.ExecuteCommand("DBCC CHECKIDENT('MyTable', RESEED, NewValue);");

或者,您可以从 L2S 调用存储过程来执行此操作

DBCC CHECKIDENT (MyTable, RESEED, NewValue)

You can also do a Truncate Table, but, of course, that will remove all rows from the table as well.

To do this via L2S:

db.ExecuteCommand("DBCC CHECKIDENT('MyTable', RESEED, NewValue);");

Or, you can call a stored procedure, from L2S, to do it

2024-10-15 12:38:26
DBCC CHECKIDENT ( ‘databasename.dbo.yourtable’,RESEED, 0)

更多信息:http://msdn.microsoft.com/en-us/library/ ms176057.aspx

DBCC CHECKIDENT ( ‘databasename.dbo.yourtable’,RESEED, 0)

More info : http://msdn.microsoft.com/en-us/library/ms176057.aspx

み青杉依旧 2024-10-15 12:38:26

使用 LINQ to SQL ExecuteCommand 运行所需的 SQL。

db.ExecuteCommand("DBCC CHECKIDENT('table', RESEED, 0);");

LINQ 是一种与数据源无关的查询语言,没有用于此类数据源特定功能的内置工具。据我所知,LINQ to SQL 也没有提供执行此操作的特定函数。

Use the LINQ to SQL ExecuteCommand to run the required SQL.

db.ExecuteCommand("DBCC CHECKIDENT('table', RESEED, 0);");

LINQ is a data-source agnostic query language and has no built-in facilities for this kind of data-source specific functionality. LINQ to SQL doesn't provide a specific function to do this either AFAIK.

橘虞初梦 2024-10-15 12:38:26

使用此代码

DBCC CHECKIDENT(‘tableName’, RESEED, 0)

use this code

DBCC CHECKIDENT(‘tableName’, RESEED, 0)
哥,最终变帅啦 2024-10-15 12:38:26

通用扩展方法:

    /// <summary>
    /// Reseeds a table's identity auto increment to a specified value
    /// </summary>
    /// <typeparam name="TEntity">The row type</typeparam>
    /// <typeparam name="TIdentity">The type of the identity column</typeparam>
    /// <param name="table">The table to reseed</param>
    /// <param name="seed">The new seed value</param>
    public static void ReseedIdentity<TEntity, TIdentity>(this Table<TEntity> table, TIdentity seed)
        where TEntity : class
    {
        var rowType = table.GetType().GetGenericArguments()[0];

        var sqlCommand = string.Format(
            "dbcc checkident ('{0}', reseed, {1})",
            table.Context.Mapping.GetTable(rowType).TableName, 
            seed);

        table.Context.ExecuteCommand(sqlCommand);
    }

用法:myContext.myTable.ReseedIdentity(0);

Generic extension method:

    /// <summary>
    /// Reseeds a table's identity auto increment to a specified value
    /// </summary>
    /// <typeparam name="TEntity">The row type</typeparam>
    /// <typeparam name="TIdentity">The type of the identity column</typeparam>
    /// <param name="table">The table to reseed</param>
    /// <param name="seed">The new seed value</param>
    public static void ReseedIdentity<TEntity, TIdentity>(this Table<TEntity> table, TIdentity seed)
        where TEntity : class
    {
        var rowType = table.GetType().GetGenericArguments()[0];

        var sqlCommand = string.Format(
            "dbcc checkident ('{0}', reseed, {1})",
            table.Context.Mapping.GetTable(rowType).TableName, 
            seed);

        table.Context.ExecuteCommand(sqlCommand);
    }

Usage: myContext.myTable.ReseedIdentity(0);

油饼 2024-10-15 12:38:26

要在 SQL Compact 表中完成相同的任务,请使用:

db.CommandText = "ALTER TABLE MyTable ALTER COLUMN Id IDENTITY (1,1)";   
db.ExecuteNonQuery(  );

To accomplish the same task in a SQL Compact table use:

db.CommandText = "ALTER TABLE MyTable ALTER COLUMN Id IDENTITY (1,1)";   
db.ExecuteNonQuery(  );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文