无法在具有唯一索引的对象中插入重复键行。重复键值。该语句已终止

Cannot insert duplicate key row in object with unique index . The duplicate key value. The statement has been terminated

我是 Outsystems 的新手 SQL。我正在尝试创建实体所在的总线应用程序

当我尝试创建一个具有相同名称但不同路线和巴士 ID 的新乘客时。我得到 Cannot insert duplicate key row in object 'dbo.OSUSR_6SL_RIDER' with unique index 'OSIDX_OSUSR_6SL_RIDER_4NAME'. The duplicate key value is (ABC). The statement has been terminated. 当我检查数据库 table 'dbo.OSUSR_6SL_RIDER' 中的名称字段时,它没有设置唯一标识符。谁能帮我解决这个问题。

您似乎正在创建完全相同的副本,即具有相同 ID 值的记录。它引用的索引名称似乎是由数据库系统自动生成的。因此,它不一定指的是名称字段。查看您的索引并查看它们包含的字段。如果 OSIDX_OSUSR_6SL_RIDER_4NAME 包含 Id 字段,我不会感到惊讶。

打开 table 下的 Indexes 树。您会找到一个名为 'OSIDX_OSUSR_6SL_RIDER_4NAME'.

的索引

编写该索引的脚本,您将看到它是 "name" 列上的一个 UNIQUE 索引,您正试图在其中创建重复值。

您必须更改该索引以包含路线和公交车 ID,或者您必须放弃创建具有重复名称的新行的尝试。

如果您使用的是 OutSystems 平台,当您从 Service Studio 发布时,所有数据库管理都是 done/generated,因此不建议直接操作数据库:您正在为自己做准备很多维护痛苦和不同环境之间的不一致。

双击实体 Rider,它将打开实体的 编辑 window。在 Indexes 选项卡中,您可以定义和更改索引(唯一或不唯一),该工具将(重新)生成所有需要的 SQL 命令。

有关详细信息,请参阅 OutSystems Platform 9 Help | Indexes Tab