是否可以设置自动增量字段的值?如果使用主键5删除记录,但当前的自动增量计数为10,是否有任何方法可以重新插入该记录,其主键仍保持为5(而不是11)?我试图用C#中的Entity Framework 4.1来做这件事。
答案 0 :(得分:5)
我认为你也可以使用
Set Identity_Insert TableName ON
Update your Id value
Set Identity_Insert TableName OFF
答案 1 :(得分:2)
引自 Tom Haigh :
您可以删除主键列并重新创建它。所有的ID 然后将重新分配,我假设按行的顺序 插入
但是,我不确定你为什么要这样做,特别是如果你 有其他表持有此表的外键。如果是这样的话 还需要更新这些字段,在这种情况下drop和 重新创建列不是一个好的解决方案。你可以改为 重新命名列,然后删除autoinc / primary key属性 创建一个新的autoinc主键列。然后你会同时拥有 可以用来更新这些外键的新旧ID。
答案 2 :(得分:1)
您可以停用identity specification。您的主键将保持不变,但您可以插入具有您选择的ID的新记录。 插入记录后,您想重新启用身份规范。
答案 3 :(得分:0)
虽然这里提出了一些很好的建议,但在处理这个问题的解决方案时我才意识到了一些事情。数据库是MySQL的披露可能会对此有所帮助,但我当时没有意识到差异会如此之大。事实上,在MySql中没有锁定插入自动增量主键。因此,此代码用于插入主键小于自动增量索引的当前值的记录:
var sql = @"INSERT INTO Work (
WorkId ,
LotId ,
Description ,
)
VALUES (
'5', '5', 'This Works'
);";
using (var db = new Context())
{
db.Database.ExecuteSqlCommand(sql);
}
正确插入索引为5的记录,即使当前的自动增量计数为11。