我以前从未见过这种情况,很奇怪。
我有一个针对的本地SQL Server 2012 Express数据库。使用TestDrive插件运行简单的测试套件,并使用EF v5访问数据库。
我只是运行了一个将记录插入数据库的测试。我的表中有9行,其ID为1-9。下一个插入和ID恰好跳了10000 !!!!
Id列为:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10009
我知道插入失败也会增加ID,但我可以保证在测试运行之间的5秒内没有10,000次插入失败…
该表的结构真的很简单,有一堆列和一个自动递增,类型bigint
(长)的标识列,没有SP,触发器或任何其他编程内容。
[Id] [bigint] IDENTITY(1,1) NOT NULL,
非常令人困惑,还有其他人看到过这种情况吗?
这篇博客文章还有一些其他细节。看起来像在2012年,identity
是作为一个序列实现的。默认情况下,序列具有缓存。如果缓存丢失,则会丢失缓存中的序列值。
建议的解决方案是使用以下命令创建一个序列no cache
:
CREATE SEQUENCE TEST_Sequence
AS INT
START WITH 1
INCREMENT BY 1
NO CACHE
据我所知,标识列后面的序列是不可见的。您不能更改其属性以禁用缓存。
要将其与Entity
Framework一起使用,可以将主键设置StoredGeneratedPattern
为Computed
。然后,您可以在instead of insert
触发器中生成身份服务器端:
if exists (select * from sys.sequences where name = 'Sequence1')
drop sequence Sequence1
if exists (select * from sys.tables where name = 'Table1')
drop table Table1
if exists (select * from sys.triggers where name = 'Trigger1')
drop trigger Trigger1
go
create sequence Sequence1
as int
start with 1
increment by 1
no cache
go
create table Table1
(
id int primary key,
col1 varchar(50)
)
go
create trigger Trigger1
on Table1
instead of insert
as
insert Table1
(ID, col1)
select next value for Sequence1
, col1
from inserted
go
insert Table1 (col1) values ('row1');
insert Table1 (col1) values ('row2');
insert Table1 (col1) values ('row3');
select *
from Table1
如果您找到更好的解决方案,请告诉我:)
问题内容: 这是目录树: 在main.go中: 在client_test.go中: 错误: 我已经阅读了如何在golang中使用自定义软件包?而且我认为我有和这个人一样的解决方案,但是我只是不知道如何解决这个问题。请帮忙。 去环境: 问题答案: 命令去,测试包。 名称与文件模式“ * _test.go”匹配的文件可以包含测试函数,基准函数和示例函数。 不要使用保留名称。例如,将与贯穿始终。
因此,在去年与react合作之后,我设法理解了它的功能和注意事项,以及如何避免不必要的渲染。 昨天我在玩一些代码,遇到了一个以前没有看到的问题,有点困惑。 在上面的代码中,我添加了一个简单的计数器,每次单击都会设置一个新的状态,这会导致重新渲染,在屏幕上显示“Count:1”,并在dev工具中显示一个“counter render”日志,就像我预期的那样。 奇怪的部分来自渲染变量,我用数字0启动(
我在Chrome Developer Tools中出现这个错误已经有一段时间了,我似乎就是找不到不安全的http://请求。它指向我的域,但没有https://。http://www.example.com/不是一个脚本,所以我不明白它是从哪里来的。 内容混杂:“HTTPS://www.example.com/categoy/a-product.html”页面是通过HTTPS加载的,但请求的脚本“
我有一个相当基本的登录设置(代码如下),其中一些组件需要身份验证。当我导航到http://localhost:8000/时,它会重定向到http://localhost:8000/login,一切正常。如果我随后登录,它将返回到http://localhost:8000/并显示我的主要组件。 但是,当我直接导航到http://localhost:8000/login时,它显示“不能GET/logi
我无法在最简单的JSF2.2页面上使用侦听器。赋值,但监听器是聋子。奇怪的是,如果我将替换为,同样的代码工作得非常好。下面是HTML: 对于两种侦听器方法类型都不触发。将bean制作为和使用不同的ajax事件类型也无济于事。 该问题出现在Apache Tomee升级到7.0.1版本(MyFaces 2.2.10,JSF 2.2)之后。MyFaces到2.2.11也有同样的问题。 web应用程序绑定
问题内容: 让我们考虑以下代码: 运行此代码段时,我将显示以下输出: 为什么我会得到不同的时区? 请注意,如果我将8月的第一个日期设置为9月,将第二个日期设置为9月,则在两种情况下输出将显示相同的时区: 将显示: 我正在使用Java 1.6.0_14 问题答案: 是中欧夏季时间。它与夏令时生效相同。