标签: identity-column

Azure表存储上的自动增量

我目前正在开发Azure表存储的应用程序.在该应用程序中,我有一个表,它将具有相对较少的插入(几千/天),并且这些实体的主键将在另一个表中使用,该表将具有数十亿行.

因此,我正在寻找一种方法来使用自动递增的整数而不是GUID作为小表中的主键(因为它将节省大量存储和插入的可伸缩性并不是真正的问题).

关于这个主题已经有过一些讨论,例如http://social.msdn.microsoft.com/Forums/en/windowsazure/thread/6b7d1ece-301b-44f1-85ab-eeb274349797.

但是,由于并发问题可能很难调试和发现,我对自己实现这一点感到有点不舒服.因此,我的问题是,是否有一个经过充分测试的阻止?

concurrency primary-key auto-increment identity-column azure-storage

17
推荐指数
3
解决办法
1万
查看次数

在SQL Server中将Identity列重置为零?

如何在SQL Server中将表的标识列重置为零?

编辑:

我们怎么能用LINQ to SQL做到这一点?

c# sql-server identity-column linq-to-sql

15
推荐指数
3
解决办法
2万
查看次数

SQL Server是否保证顺序插入标识列?

换句话说,以下"光标"方法是否有效:

  1. 从DB检索行
  2. 保存返回记录中的最大ID以供日后使用,例如在 LastMax
  3. 后来, "SELECT * FROM MyTable WHERE Id > {0}", LastMax

为了使其工作,我必须确保我在步骤1中没有得到的每一行都有一个大于的Id LastMax.这是保证,还是我可以遇到奇怪的竞争条件?

sql-server identity-column sql-server-2008

13
推荐指数
2
解决办法
5458
查看次数

在SQL Server中更改身份种子(永久!)

有没有办法永久更改标识列的标识种子?使用DBCC CHECKIDENT似乎只是设置了last_value.如果表被截断,则重置所有值.

dbcc checkident ('__Test_SeedIdent', reseed, 1000)

select name, seed_value, increment_value, last_value
from sys.identity_columns
where [object_id] = OBJECT_ID('__Test_SeedIdent');
Run Code Online (Sandbox Code Playgroud)

回报

name      seed_value  increment_value  last_value
-------------------------------------------------
idIdent   1           1                1000
Run Code Online (Sandbox Code Playgroud)

我希望有一些语法

alter table dbo.__Test_SeedIdent alter column idIdent [int] identity(1000,1) NOT NULL
Run Code Online (Sandbox Code Playgroud)

会存在.

是否有必要创建一个新列,移动值,删除原始列并重命名新列?

sql-server seed identity-column

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

如何在SQLite数据库中重新设置自动增量列?

是否可以在SQLite数据库中重新设置自动增量列,如果是这样,这是如何完成的?

即.相当于DBCC CHECKIDENT ('MyTable', RESEED, 1)SQL Server.

sql t-sql sqlite identity-column

12
推荐指数
2
解决办法
6574
查看次数

无法插入显式值,因为IDENTITY_INSERT为OFF,但无法将IDENTITY_INSERT设置为ON,因为它已经为ON

我在数据库中有一个Foo名为的表Bar,它有一个名为的列ID,它是主键,并且该数据库位于开发SQL Server上.

我正在尝试将数据从我们的生产服务器复制到开发服务器中,以便我可以使用所述数据,因此我执行以下操作:

set IDENTITY_INSERT Foo.dbo.Bar ON
insert into Foo.dbo.Bar
(
   ID
   ,Something
   ,Else
   ,Is
   ,Going
   ,Horribly
   ,Wrong
   ,With
   ,SQL
)
select 
  ID
  ,Something
  ,Else
  ,Is
  ,Going
  ,Horribly
  ,Wrong
  ,With
  ,SQL
from Production.Foo.dbo.Bar

set IDENTITY_INSERT Foo.dbo.Bar OFF
Run Code Online (Sandbox Code Playgroud)

我得到了错误

消息8107,级别16,状态1,行1
IDENTITY_INSERT已经为表'Foo.dbo.Bar'打开.无法对表'Foo.dbo.Bar'执行SET操作.

嗯......可以打开表格的IDENTITY_INSERT.所以我SET IDENTITY_INSERT Foo.dbo.Bar ON从查询的顶部删除了,然后执行它,我得到这个错误:

消息544,级别16,状态1,行1
当IDENTITY_INSERT设置为OFF时, 无法在表"Bar"中插入标识列的显式值.

我可以SET IDENTITY_INSERT Foo.dbo.Bar OFF整天执行,但如果我试图将其转换ON,那么SQL Server 2012 IDENTITY_INSERT就已经开启了.

sql insert identity-column sql-server-2012

12
推荐指数
1
解决办法
3万
查看次数

Oracle标识列并插入到select中

Oracle 12引入了很好的功能(应该很久以前就已经存在了!) - 标识列.所以这是一个脚本:

CREATE TABLE test (
    a INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    b VARCHAR2(10)
);

-- Ok
INSERT INTO test (b) VALUES ('x');

-- Ok
INSERT INTO test (b)
SELECT 'y' FROM dual;

-- Fails
INSERT INTO test (b)
SELECT 'z' FROM dual UNION ALL SELECT 'zz' FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

前两个插入运行没有问题,提供'a'为1和2的值.但第三个插入失败ORA-01400: cannot insert NULL into ("DEV"."TEST"."A").为什么会这样?一个bug?关于标识列限制的文档部分中没有提到这样的内容.或者我只是做错了什么?

oracle identity-column oracle12c

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

在Entity Framework中,插入后获取标识列的值

我正在使用EF4.我想在数据库中插入一个新的MyObject.MyObject有两个字段:

Id:int(Identity)和Name:string

正如我在文档中看到的,实体框架应该在调用SaveChanges()之后将MyObject.Id设置为数据库生成的值,但在我的情况下不会发生.

using (var context = new MyEntities())
{
    var myObject = MyObjects.CreateMyObject(0, "something"); // The first parameter is identity "Id"
    context.MyObjects.AddObject(myObject);
    context.SaveChanges();
    return myObject.Id; // The returned value is 0
}
Run Code Online (Sandbox Code Playgroud)

更新:

这发生在我的一个实体中,其他工作正常.顺便说一句,我检查了DB列是标识,StoreGeneratedPattern设置为Identity.这是SSDL.我没有看到任何区别.第一个不正常:

    <EntityType Name="OrgUnit">
      <Key>
        <PropertyRef Name="Srl" />
      </Key>
      <Property Name="Srl" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
      <Property Name="TypeId" Type="smallint" Nullable="false" />
      <Property Name="Name" Type="varchar" Nullable="false" MaxLength="80" />      
    </EntityType>

    <EntityType Name="OrgType">
      <Key>
        <PropertyRef Name="Srl" />
      </Key>
      <Property Name="Srl" Type="smallint" Nullable="false" StoreGeneratedPattern="Identity" />
      <Property Name="Title" Type="varchar" Nullable="false" MaxLength="120" />
      <Property …
Run Code Online (Sandbox Code Playgroud)

entity-framework identity-column

10
推荐指数
3
解决办法
3万
查看次数

要修改的列不是标识列

我创建了一个包含列的表现S_ROLL NUMBER(3) NOT NULL在我想将此列作为标识列.我用过这个命令

alter table students
modify
(
S_ROLL NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY
);
Run Code Online (Sandbox Code Playgroud)

然后我收到了这个错误.

S_ROLL NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY
*
ERROR at line 4:
ORA-30673: column to be modified is not an identity column
Run Code Online (Sandbox Code Playgroud)

oracle identity-column

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

Oracle Alter命令重命名现有的列错误环

alter table tablename rename column zl_divn_nbr to div_loc_nbr;
Run Code Online (Sandbox Code Playgroud)

执行以上语句时出错。请帮忙。

SQL Error: ORA-54032: column to be renamed is used in a virtual column expression
54032. 0000 -  "column to be renamed is used in a virtual column expression"
*Cause:    Attempted to rename a column that was used in a virtual column
           expression.
*Action:   Drop the virtual column first or change the virtual column
           expression to eliminate dependency on the column to be renamed
Run Code Online (Sandbox Code Playgroud)

oracle alter identity-column

8
推荐指数
2
解决办法
3014
查看次数