首页 > 解决方案 > 使用生成器将新行插入 Firebird 数据库

问题描述

有一种方法可以使用生成器将新行插入 Firebird 数据库,但出于本项目的目的,我不应该使用触发器来获取要插入的表的下一个 ID。

我在 .NET MVC 项目中使用 Firebird 实体框架。我能做些什么来保证插入的新行没有重复的主键或其他冲突?

值得一提的是,我想通过控制器或方法来控制这种情况。

标签: asp.netfirebirdfirebird2.5

解决方案


如果您定义了主键,则不可能有重复的主键(但尝试插入具有已存在 id 的行会产生错误)。

如果您确实不允许使用触发器(老实说,这听起来像是一个相当随意且适得其反的要求),您可以创建一个序列(又名生成器),并使用NEXT VALUE FOR表达式在您的插入语句中生成 id。

因此,创建一个序列(每个表一个):

create sequence sq_mytable;

并在插入时使用它:

insert into mytable (id, column1, column2) 
  values (next value for sq_mytable, 'value1', 'value2');

推荐阅读