当前位置: 首页 > 编程语言 > C#

SQLServersequencegap分享

时间:2023-04-11 00:16:53 C#

SQLServersequencegap我有一个SEQUENCE,用来设置表的事务folio:CREATESEQUENCE[Seq].[Folio]AS[bigint]STARTWITH114090INCREMENTBY1MINVALUE-9223372036854775808MAXVALUE9223372036854775807CACHE今天出于好奇,我做了一个:SELECTfolioFROMtransactionsORDERBYfolioDESC如果有差距,那么表中缺少作品集会令人惊讶。示例:这意味着正在发生某些事情。为了提供更多信息,我正在使用的INSERT存储过程在插入之前具有以下内容......数据库事务,所以如果一切顺利,应用程序执行COMMITTRANSACTION,如果不成功,我执行ROLLBACKTRANSACTION。我认为问题的根源是事务,所以当错误发生时,序列的NEXTVALUE已经生成,ROLLBACK对此没有影响。任何线索如何解决这个问题,以便有一个没有间隙的完美序列?所以,你应该了解一些关于序列的事情。它不是事务性的,所以是的,一旦事务检索到值,回滚就不会恢复它。sequence的值是批量赋值的,比如说你把cachesize设置为10,取一个值,重启server,就会有10个gap。至于如何得到一个完美的sequence,嗯,只有您可以这样做的方法是从可序列化事务中获取表中的最大值。您现在应该问自己的问题是“他们真的需要井井有条吗?”。以上就是C#学习教程:SQLServer序列差距分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: