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

时间:2015-12-17 18:41:32

标签: sql-server outsystems

我是Outsystems和SQL的新手。我尝试创建实体所在的总线应用程序 enter image description here

当我尝试创建一个具有相同名称和不同Route和总线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. 当我在数据库表中检查名称字段时,' dbo.OSUSR_6SL_RIDER'它没有设置唯一标识符。任何人都可以帮助我。

3 个答案:

答案 0 :(得分:3)

打开桌子下的Indexes树。您将找到名为'OSIDX_OSUSR_6SL_RIDER_4NAME'的索引。

编写索引的脚本,你会发现它是"名称"的唯一索引。您尝试在。中创建重复值的列。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您使用的是OutSystems平台,那么当您从Service Studio发布时,所有数据库管理都已完成/生成,因此不建议直接操作数据库:您需要为自己设置很多维护工作和不同环境之间的不一致。

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

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

enter image description here