【问题标题】:SQL Server Auto-Increment Next INSERT QuerySQL Server 自动递增下一个 INSERT 查询
【发布时间】:2012-06-28 09:54:59
【问题描述】:

我在 MySQL 方面有很好的背景,但我对 SQL Server 的来龙去脉还很陌生。我将通过在 MySQL 中设置和解决完全相同的问题来问我的问题:


创建表:

CREATE TABLE IF NOT EXISTS `example` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `stuff` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

在表格中插入一个值:

INSERT INTO `example` (
  `id`, `stuff`
) VALUES (
  NULL, 'Hello World'
) ;

通过执行上述查询,id 列将自动接收下一个可用整数用作主键,我不参与任何工作。

但是,在int 类型的 SQL Server 表中插入一行时尝试相同的想法会给我这个错误:

Cannot insert the value NULL into column 'id', table 'database.user.example'; column does not allow nulls. INSERT fails. (severity 16) ...

在 SQL Server INSERT 查询中可以使用什么来自动增加主键,就像 MySQL 使用 NULL 值一样?

感谢您的宝贵时间。

【问题讨论】:

    标签: mysql sql sql-server null auto-increment


    【解决方案1】:

    您是否在列定义中将该列设置为 IDENTITY 列?

    CREATE TABLE example (ID int IDENTITY(1,1), Stuff VARCHAR(255))
    
    INSERT INTO example (Stuff) VALUES ('Hello World!')
    

    【讨论】:

    • 啊...不,我省略了。 MySQL 语法处理这有点不同。很高兴知道这一点!有没有办法让我可以ALTER 表格将这个值滑入,还是必须删除表格?
    • 没关系...我可以创建一个新列并删除旧列。很好的答案!
    【解决方案2】:

    这是您需要的标识列。 @Mark Byers 是正确的。只需省略列

    【讨论】:

    • 糟糕,我没有注意到他没有将其声明为 IDENTITY。我以为 OP 已经想通了!
    猜你喜欢
    • 2011-12-09
    • 2012-01-13
    • 1970-01-01
    • 2011-04-06
    • 2017-03-24
    • 1970-01-01
    • 2020-05-23
    • 2019-02-14
    • 2016-11-22
    相关资源
    最近更新 更多