【问题标题】:Reset auto increment重置自动增量
【发布时间】:2017-01-02 13:57:04
【问题描述】:

我的问题从这里开始:How to setup auto increment for Service-Based Database

因此,如果我必须在删除表行后以这种方式重置自动增量:

http://befused.com/mysql/reset-auto-increment

我第一次处理 T-SQL 扩展和 SQL。这里有什么问题,不确定我是否正确:

CREATE TABLE [dbo].[Tab1] (
    [Id]     INT  IDENTITY (1, 1) NOT NULL,
    [Phrase] TEXT NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

SELECT MAX( Id ) FROM [Tab1] ;
ALTER TABLE Tab1 AUTO_INCREMENT = number; 

得到这个错误:

严重性代码描述项目文件行抑制状态错误 SQL80001: '' 附近的语法不正确。需要 '.'、ID 或 QUOTED_ID。 dbo.User 8

和:

SeverityCode 描述项目文件行抑制状态错误 SQL80001: '' 附近的语法不正确。 dbo.User 7

【问题讨论】:

  • 您实际上是在运行ALTER TABLE User AUTO_INCREMENT = number;,还是将“数字”替换为您从第一个查询中找到的值(MAX(id) 之一)?
  • 并非每个 SQL 都是相同的。在随机尝试并祈祷它们会起作用之前,请务必read the documentation on MySQL
  • 在每行删除后重置自动增量对我来说听起来是个坏主意。
  • 如果您在每次删除行后重置自动增量,那么您做错了。如果您不需要自动增量列,请不要使用自动增量列。如果您确实需要它,请停止自己管理它并让数据库来做(这就是名称中的 auto 的意思)。 自动增量 不是意味着我在我的代码中管理自己的值;它表示插入行时数据库自动管理的值
  • 请修正您的标签:“t-sql”是 SQL 版本的 SqlServer(请参阅悬停时的标签说明),但您也谈到了 MySql——它是什么?您的问题中也没有“C#”。

标签: sql sql-server tsql auto-increment


【解决方案1】:

如果你想重新播种到不同的号码,你可以使用下面的:

dbcc checkident(tab1, reseed, 100)

【讨论】:

    【解决方案2】:

    MYSQL

    CREATE TABLE Tab1 ( 
        Id INT NOT NULL AUTO_INCREMENT, 
        Phrase TEXT NOT NULL, 
        PRIMARY KEY CLUSTERED (Id ASC) 
    ); 
    
    ALTER TABLE Tab1 MODIFY COLUMN Id INT AUTO_INCREMENT // To set column as auto increment
    

    MSSQL(以防有人需要)

    创建表的语法是可以的,但是在创建自增列时,你可以像这样添加它

    CREATE TABLE [dbo].[User] (
        [Id]     INT NOT NULL AUTO_INCREMENT PRIMARY KEY, // Set column as primary key and auto increment
        [Phrase] TEXT NOT NULL,
        PRIMARY KEY CLUSTERED ([Id] ASC)
    );
    

    SELECT MAX( Id ) FROM [User]; // You forgot the brackets in this part,Useris a reserved word in TSQL

    【讨论】:

    • TSQL?问题是关于 MySql 的。
    • @Kinetic 最初的问题很困惑它是什么。
    • 建表语法基本一致
    • 这是一个令人困惑的问题。仍然不确定他是在尝试创建一个新表还是只是在现有表上重置自动增量。
    • @MolC "MSSQL" 指的是 "Microsoft SQL Server"。 “MySQL”是另一个不兼容的数据库。它不是来自“Mycrosoft”。它们有不同的命令、语法和许多其他非常重要的差异。你用的是哪一个?您收到的错误提示 Microsoft SQL Server。
    猜你喜欢
    • 2019-05-11
    • 1970-01-01
    • 2011-08-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    相关资源
    最近更新 更多