sql - 自动递增主键值始终为 0
问题描述
我试图使用下面的代码向数据库添加一个新行。
即使Rundef
表有一个应该自动递增的主键,它的值总是为零。为什么会这样?
Private oRunDefDS As DataSet
Dim oDR As DataRow = oRunDefDS.Tables("RunDef").NewRow()
表的设计Rundef
:
解决方案
当您在代码中创建新行时,它尚未插入到数据库中。这意味着数据库引擎没有分配它的增量 ID,而是给它一个默认值 0。
将记录插入数据库,id 应该会自动更新,尽管您可能需要重新读取该行以取回数据,具体取决于您正在使用的数据访问。
如果不是这种情况,那么您的代码可以创建许多仅供内部使用的新行,但需要对所使用的 ID 进行保留。如果您从未将这些新行保存到数据库中,您最终会在增量 ID 中出现很多空白。
推荐阅读
- android - Play 商店预发布报告中 LG G6 上的相机代码崩溃
- c++ - 在 STL - C++ 中按学生的成绩对学生列表进行排序?
- r - 如何设置AND“&”多个条件以删除带有“!”的行 数据表方式R
- php - 条纹。每月订阅
- php - Laravel - 不同刀片文件的js部分产生冲突
- c++-cli - C++/CLI 中的 EPPlus
- javascript - Vue.js 2.x 使用按钮更改输入元素中 disabled 属性的值
- sql - 如何将变量的内容插入到 INSERT INTO 命令内的单引号中?
- python-3.x - 更改 keras 中的 batch_size 参数会导致广播错误
- excel - 下标超出范围 - 使用 Excel VBA 查找下一个