问题标签 [identity-column]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9039 浏览

alter-table - Teradata:如何向现有表添加标识列?

我需要使用以下 SQL 将标识列添加到现有表中:

我可以很好地创建带有标识列的新表,但是上面的脚本给了我以下错误:

ALTER TABLE Failed. 3706: Syntaxt error: Cannot add new Identity Column option

Teradata 数据库严重缺乏在线支持,我只遇到一个选项,即基本上创建带有标识列的表的副本,并从旧表批量插入新表,并将所有引用更改为新表。我很难相信这是唯一可行的方法。

我在这里有什么选择?

0 投票
4 回答
13529 浏览

sql-server - 如何轻松找到有溢出危险的 IDENTITY 列?

我的数据库正在变旧,而我最大的INT IDENTITY列之一的价值约为 13 亿。这将溢出大约 21 亿。我计划增加它的大小,但由于数据库中的记录数量,我不想太快这样做。我可能会在增加列大小之前更换我的数据库硬件,这可以抵消这可能导致的任何性能问题。我还想关注我的数据库中所有其他列已满 50% 的列。这是很多表,手动检查每一个是不切实际的。

这就是我现在获取值的方式(我知道返回的值可能有点过时,但对于我的目的来说已经足够了):

我可以使用INFORMATION_SCHEMA获取此信息吗?

0 投票
1 回答
4650 浏览

sql-server-ce - 唯一标识符作为 SQL Server CE 中的身份?

在 SQL Server CE 中,我可以创建具有数据类型的标识列uniqueidentifier吗?如果是这样,怎么做?如果不是,为什么不呢?

我曾尝试在 VS2010 的服务器资源管理器中使用“新表”创建它,并且只有在类型为 int 时才会启用标识选项。

编辑:

根据 EricEJ 的建议,我确实做了专栏 PK。我还将它设置为“RowGuid”

我不知道该RowGuid属性的确切用途,但它似乎具有预期的效果,即在插入时自动创建新的默认 guid 值,而无需在代码中创建它们。将默认值设置为顺序 guid 会很好,但 SQL Server CE 似乎不支持这一点。

0 投票
1 回答
1295 浏览

sql - 创建数据库副本 - 由于使用“身份”规范而失败

我一直试图弄清楚如何在生成脚本以重新创建数据库时正确适应如何处理“身份”列。

我需要为此生成脚本的最初原因是因为我必须将 SQL 数据库“降级”到旧版本。我知道数据库(v10.5)中的所有内容都与旧版本(v10.0)兼容。我面临的问题是,在复制数据库的 3 种不同方法中,它总是失败,因为它无法维护原始 ID 字段(即身份)。

我的每张桌子都有第一列ID: Int = PK & Identity。我也有很多情况下,该列中的表没有完全按顺序排列,例如 1、2、3、5、8、12、13 等。那只是因为这些记录过去已被删除。但似乎不可能以与以前相同的顺序重新插入原始 ID 号......

那么如何将数据库从服务器 A 完整复制(不备份/恢复)到服务器 B?注意:我可以从 Management Studio 连接到两台服务器上的两个数据库。此外,目标服务器不是我的,它是一个共享托管数据库,我只能访问我的数据库。我无权更改目标服务器设置。

我尝试了以下方法:

  • 为整个数据库选项生成脚本
  • 导出数据库选项
  • 备份/恢复数据库 - 由于版本不匹配而失败

我猜我可能只需要暂时“禁用”所有表上的身份规范,插入数据,然后重新打开身份。但是我对编写用于操作数据库结构的脚本感到很害怕。数据本身,我可以。但是在操作数据库结构时,我已经习惯了为此使用工具,以至于我什至从来没有花时间使用脚本——除了这个特定的场景,希望我也永远不必学习。

0 投票
2 回答
154 浏览

sql - 身份重置问题

可能重复:
SQL 服务器标识列值从 0 而不是 1 开始

插入的标识值从“0”开始

这里我将创建一个数据库并创建一个表,现在我将尝试删除空表中的记录并重置身份。当我现在插入记录时,它从标识值“0”开始。

任何人都可以帮我解决这个问题。

0 投票
2 回答
610 浏览

nhibernate - 使用 Fluent AutoMap 暂时关闭标识列?

我已经开始在 C# 中测试 Fluent NHibernate 我有一个规范化的对象结构,其中包含 20 个相关类。我目前使用 Fluent 1.3 和 NHibernate 3.2。到目前为止,我已经设法使用了适合我的 AutoMap 功能,非常方便!

但是...其中 3 个表是“枚举表”,需要将其记录设置为特定的 Id 值。我试图对这些表进行手动映射,并让其余的自动映射。但是当创建手动表时它会失败,因为它引用了一个自动映射的表(并且不适用于手动映射器?)

是否可以使用 AutoMapping 但对于一些极少数的类会覆盖主键上的标识创建?我试图制定一个自定义约定,但没有成功。

还有其他方法吗?被迫重新对所有类使用手动映射将是可悲的......

0 投票
2 回答
657 浏览

asp.net - 从 ASP.Net 设置 IDENTITY_INSERT

我正在编写一个基于 Web 的导入器,以将数据从一个数据库导入另一个数据库。由于数据被加载到具有标识的表中,因此我需要在执行插入语句之前启用 Identity_Inserts。我生成了需要运行到列表中的 SQL 语句,我想做的是在循环执行命令之前将 IDENTITY_INSERT 设置为 ON,然后在完成后将其设置为后退。我将一次执行每个命令,因为我想跟踪哪些命令失败。

我尝试在开始循环之前执行 SET IDENTITY_INSERT [TABLE NAME] ON ,但这不起作用。

我怎样才能完成我想做的事情,或者有人有其他想法吗?

0 投票
1 回答
925 浏览

c# - 使用标识列进行单元测试

IDENTITY在我的 SQL Server 表中使用列。

我有一个单元测试,我在其中删除具有特定 ID 的数据记录。

当我插入测试数据时,我得到了这个异常:

当 IDENTITY_INSERT 设置为 OFF 时,无法在表“MyTablename”中插入标识列的显式值

然后我在我的管理工作室做一个快速测试:

它说Command(s) completed successfully.

我重新运行单元测试,但仍然得到相同的错误。

一般来说,我该怎么做?我希望我的包含所有表的单元测试数据库应该允许我为标识列手动插入一个值。

0 投票
1 回答
982 浏览

sql-server-express - 当我尝试运行 ALTER TABLE 查询以添加具有自动增量的 PK 时,SQL Server Management Studio Express 崩溃

我有一个现有的表,我使用现有的列(类型INT)作为 PK,并在插入的每一行时手动增加其值。我想通过自动增量将其更改为 IDENTITY。我在这里找到了一个线程(http://stackoverflow.com/questions/4862385/sql-server-add-auto-increment-primary-key-to-existing-table),它似乎完全实现了我想要的。但是每次我运行 ALTER 语句时,Mgmt Studio 都会崩溃。

我还尝试通过手动更改列属性(身份规范/是身份:是)来实现我的上述目标,就像在这个线程中一样(http://stackoverflow.com/questions/3876785/sql-server-cant-insert-null -进入主键字段)。但是每次更改属性后关闭表格时,都会出现错误

'Pix' 表
无法修改表。
无法将值 NULL 插入列“picID”、表“photo.dbo.Tmp_Pix”;列不允许空值。插入失败。
该语句已终止。

不知道发生了什么。

0 投票
0 回答
642 浏览

mysql - 插入只有一列标识的实体框架表

我对 EF 和只有一个标识列的表有疑问:该表是FileData并且该列是id_file_data标识列(mysql 数据库),并且我有以下代码用于创建:

但是在context.SaveChanges()我有一个空引用异常。我需要做什么才能插入这个实体?

谢谢!