标签: identity-column

SQL Server 2008:如果身份超过int的最大值,会发生什么?

想象一下,我们有一张桌子:

create table MYTABLE (
 id int IDENTITY(1,1)
,name varchar(10)
)
Run Code Online (Sandbox Code Playgroud)

我们必须在表中插入很多行.

有人知道当生成的标识值超过最大整数值(2 ^ 63-1)时会发生什么?

sql-server identity identity-column sql-server-2008

1
推荐指数
1
解决办法
1176
查看次数

ExecuteStoreCommand返回-1,EntityFramework,C#?

我想得到下一个自动递增的主键,在这里我理解使用T-SQL来做到这一点.所以我写了以下方法:

public int GetLastNewsID()
{
    const string command = @"SELECT IDENT_CURRENT ('{0}') AS Current_Identity;";
    int id = EntityModel.ExecuteStoreCommand(command, "News");
    return id;
}
Run Code Online (Sandbox Code Playgroud)

但它返回-1,而现在它必须是4.

PS:当我在SQL Management Studio中执行T-SQL下面时,它返回4

USE T;
GO
SELECT IDENT_CURRENT ('NEWS') AS Current_Identity;
GO
Run Code Online (Sandbox Code Playgroud)

c# sql t-sql entity-framework identity-column

1
推荐指数
1
解决办法
8824
查看次数

更改 mssql 列以添加没有 t-sql 的自动增量

可以更改现有的 MSSQL 列以向该列添加自动增量选项(它是主键,但不是自动增量),而无需编写 t-sql 代码,而只是使用更改策略?

我可以用 t-sql 找到解决方案,但我需要没有它。

sql sql-server auto-increment identity-column

1
推荐指数
1
解决办法
9869
查看次数

我在使用SQL Server Express的身份功能时遇到问题

我正在使用SQL Server Express,我创建了这个表

CREATE TABLE inventory
(
    id INT NOT NULL IDENTITY(1,1),
    description nvarchar(50),
    quantity int,
    price money
)
Run Code Online (Sandbox Code Playgroud)

当我插入此声明时:

INSERT INTO inventory VALUES('water', 20, 1.50)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

查询和表中的列数必须匹配.[query = 3中的列数,表中的列数= 4]

当我发表这个声明时:

INSERT INTO inventory VALUES(1, 'water', 20, 1.50)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

该列无法修改.[列名= id]

我以为身份会自动增加值,所以我也不能这样做,我该如何解决?提前致谢

sql-server identity-column sql-server-express

0
推荐指数
1
解决办法
661
查看次数

知道数量的多个插入

假设我有一张这样的产品的桌子

product  |  number
----------------------
aaaa     |     2
bbbb     |     3
cccc     |     1
dddd     |     4
Run Code Online (Sandbox Code Playgroud)

它有点复杂,但想法是一样的.

我需要返回这样的东西

aaaa0001
aaaa0002
bbbb0003
bbbb0004
bbbb0005
cccc0006
dddd0007
dddd0008
dddd0009
dddd0010
Run Code Online (Sandbox Code Playgroud)

我的意思是,每个产品都是列中指定的次数,最后是某种识别器.

我怎样才能做到这一点 ?

我想到了表变量,Id上有标识

DECLARE @Codigos TABLE (ID INT IDENTITY(1,1), Barra Varchar(50) NOT NULL)
Run Code Online (Sandbox Code Playgroud)

插入后,做

select rtrim(ltrim(barra)) + right('0000' + rtrim(ltrim(cast(id as varchar(10)))),4) from @Codigos
Run Code Online (Sandbox Code Playgroud)

但这意味着我必须为每个产品插入产品变量中的次数,例如

@Codigos
id     |   Barra
----------------
1      |   aaaa
2      |   aaaa
Run Code Online (Sandbox Code Playgroud)

我面临着这个问题.我怎样才能做到这一点 ?用光标?这就是我的想法,但我想知道是否有更好的选择.

原始表中最大为300行.

sql sql-server identity-column sql-server-2008

0
推荐指数
1
解决办法
58
查看次数

SQL Server如何在标识列中生成值?

我的问题是,如果我并行地将两个批量插入到一个表中,SQL Server如何创建标识值?

我的意思是,如果在一个会话中我插入多行(Row1-Row2-Row3)并同时另一个会话同时插入多行(Row4-Row5-Row6),结果会是这样的?

Row1
Row2
Row3
Row4
Row5
Row6
Run Code Online (Sandbox Code Playgroud)

或者这样的事情?

Row1
Row6
Row3
Row5
Row4
Row2
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server identity-column sql-server-2008

0
推荐指数
1
解决办法
771
查看次数

查询以获取下一个身份?

查询以获取下一个身份?对于没有删除记录的表,这是可能的:

SELECT TOP 1 EMPID + 1 FROM Employee ORDER BY EMPID DESC
Run Code Online (Sandbox Code Playgroud)

如果有删除的数据,我将如何获得下一个身份?例如,我有一个这样的表:

EMPID    NAME
4001     someName
4002     someName
4003 ----------------------- this is deleted
4004     someName
4005     someName
4006     someName
4007     someName
4008     someName
4009 ----------------------- this is deleted
4010 ----------------------- this is deleted
Run Code Online (Sandbox Code Playgroud)

输出必须是4011

sql t-sql identity-column sql-server-2008-r2

0
推荐指数
1
解决办法
2万
查看次数

SQL Server:Identity列采用随机范围

在处理SQL Server数据库时,我发现SQL Server 2012 Enterprise Edition中的标识列值突然跳转到101.

数据库中共有10条记录(1到10).没有执行删除操作,并且在插入记录号11时,工具101.

我在浏览了一些在线帮助后找到了原因:

在这里,这里这里.

这件事后面还有其他原因吗?

sql sql-server identity-column

0
推荐指数
1
解决办法
543
查看次数

如何在SQL Server中添加Identity Column?

在此输入图像描述

这是我的表,Id是唯一约束...现在我想在ID中添加身份列.任何人都可以帮助我如何使用TSQL.这是现有的表格.

sql t-sql sql-server identity-column

0
推荐指数
1
解决办法
4475
查看次数

如何在SQL Server中将表重新播种为0?

这不起作用:

DBCC CHECKIDENT('[DMS].[dbo].[ImportedFiles]', RESEED, 0)
Run Code Online (Sandbox Code Playgroud)

插入下一条记录后,我希望种子为0而不是1.

我试过这个,但功能不喜欢它:

DBCC CHECKIDENT('[DMS].[dbo].[ImportedFiles]', RESEED, -1)

DBCC CHECKIDENT('[DMS].[dbo].[ImportedFiles]', RESEED, '-1')
Run Code Online (Sandbox Code Playgroud)

如何重置表的种子,以便下一个记录是零?(0)?

sql sql-server identity-column

-1
推荐指数
2
解决办法
478
查看次数