首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入列而不具有标识

插入列而不具有标识
EN

Stack Overflow用户
提问于 2015-03-16 21:54:24
回答 4查看 2.1K关注 0票数 1

我有张桌子

代码语言:javascript
复制
CREATE TABLE [misc]
(
    [misc_id] [int] NOT NULL,
    [misc_group] [nvarchar](255) NOT NULL,
    [misc_desc] [nvarchar](255) NOT NULL
)

misc_id [int] not null本应该是IDENTITY (1,1),但现在不是,现在我有问题了

使用一个简单的表单将其插入到此表中,但由于misc_id正在寻找一个用户不知道的数字,除非他们能够访问数据库。

我知道一个选项是创建另一个列,使其成为IDENTITY(1,1)并复制该数据。

还有别的办法可以绕过这件事吗?

代码语言:javascript
复制
INSERT INTO misc (misc_group, misc_desc)
VALUES ('#misc_group#', '#misc_desc#')

我有Server 2012

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-16 22:54:53

您应该使用所需的标识列重新创建表。下面的语句将使您接近。在迁移数据时,Server将自动将表的标识字段调整为MAX(misc_id) +1。

显然,您需要停止尝试使用新记录插入misc_id。您需要在插入记录之后检索SCOPE_IDENTITY()列。

代码语言:javascript
复制
-- Note: I'd recommend having SSMS generate your base create statement so you know you didn't miss anything.  You'll have to export the indexes and foreign keys as well.  Add them after populating data to improve performance and reduce fragmentation.
CREATE TABLE [misc_new]
(
    [misc_id] [int] NOT NULL IDENTITY(1,1),
    [misc_group] [nvarchar](255) NOT NULL,
    [misc_desc] [nvarchar](255) NOT NULL
    -- Todo: Don't forget primary key but can be added later (not recommended).
)
GO

SET IDENTITY_INSERT misc_new ON;

INSERT INTO misc_new
(
    [misc_id],
    [misc_group],
    [misc_desc]
)
SELECT
    [misc_id],
    [misc_group],
    [misc_desc]
FROM misc
ORDER BY misc_id;

SET IDENTITY_INSERT misc_new OFF;
GO

EXEC sp_rename 'misc', 'misc_old';
EXEC sp_rename 'misc_new', 'misc';
GO
票数 0
EN

Stack Overflow用户

发布于 2015-03-16 22:15:13

将int列更改为标识可能会导致问题,因为默认情况下,如果不使用set identity_insert命令,就不能将值插入标识列。因此,如果您有将值插入标识列的现有代码,则它将失败。但是,允许Server插入值(即将其更改为标识列)要容易得多,因此我将将misc_id更改为标识列,并确保没有程序将值插入到misc_id中。

票数 0
EN

Stack Overflow用户

发布于 2015-03-16 22:30:34

如果更改表不是选项,则可以尝试使用不同的表插入最新的misc_id值,因此每当您向表中插入新记录时,都会检索该值、添加1,并将其用作新Id。只是别忘了在那之后更新表格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29087658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档