asp.net - 使用生成器将新行插入 Firebird 数据库
问题描述
有一种方法可以使用生成器将新行插入 Firebird 数据库,但出于本项目的目的,我不应该使用触发器来获取要插入的表的下一个 ID。
我在 .NET MVC 项目中使用 Firebird 实体框架。我能做些什么来保证插入的新行没有重复的主键或其他冲突?
值得一提的是,我想通过控制器或方法来控制这种情况。
解决方案
如果您定义了主键,则不可能有重复的主键(但尝试插入具有已存在 id 的行会产生错误)。
如果您确实不允许使用触发器(老实说,这听起来像是一个相当随意且适得其反的要求),您可以创建一个序列(又名生成器),并使用NEXT VALUE FOR
表达式在您的插入语句中生成 id。
因此,创建一个序列(每个表一个):
create sequence sq_mytable;
并在插入时使用它:
insert into mytable (id, column1, column2)
values (next value for sq_mytable, 'value1', 'value2');
推荐阅读
- programming-languages - 为什么我们不总是使用延续传递风格?
- javascript - 通过 JavascriptInterface 将 Javascript 对象传递给 Android 应用程序
- android - 获取分类和累积的表格数组
- c# - 如何仅通过 cmd 执行 .exe
- python - 用 Python 搜索 json 并返回一个列表
- java - 选择器不包含主类型 eclipse
- python - PyDev 项目最轻量级的 Eclipse 安装是什么?
- capture - 像 Slurpy 一样使用 Capture
- robotframework - Robotframework 在评估返回值时抛出错误
- sql - SQL中每行列的增量连接