问题标签 [composite-primary-key]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
508 浏览

ruby-on-rails - Rails ORM,它可以处理引用同一个表的两个外键的复合主键吗?

编辑于 30 日,03:16,以显示改进的迁移和模型

我有一个元素表,每个元素都可以连接到许多其他元素。在 Rails 的迁移和模型中可以做到这一点吗?(以下是用SQL实现的)

元素表:具有整数 id 主键字段以及其他字段。

元素间链接表:

此查询返回通过其 id 链接到特定元素的所有元素,例如 3:

这在 Postgres 中有效,我想翻译成 Rails,但正在努力为 Rails 找到解决方案……我在做什么是愚蠢的,还是只是不那么常见?

到目前为止,我有迁移(它有一个假的复合主键,没有引用 elements.id 的外键):

并有以下型号:

任何想法将不胜感激!


在过去的 24 小时内,我发现了一些似乎很接近但还没有完全让我明白的事情:

非常感谢!

0 投票
1 回答
1482 浏览

jpa - 当目标实体具有复合主键但源没有时的一对多问题映射

我有一个用户获得一些个人资料的用例:所以是一对多关联。

这是通过伪 sql 中的这些遗留表映射的。

这是java映射:

和 userprofiles 类

当我从 UserDao 获得用户时,我收到此异常:

问题是在源实体(获得 1-N 关联的实体)上,我只有一列可以进行连接。

我试图更改目标实体的 ID;所以在 user_profiles 类中,只声明 user_id 作为键:但是以这种方式,当 jpa 创建查询时,它只处理一个 user_profiles 出现,使关系为 1-1。

知道如何解决问题并使关联正常工作吗?

亲切的问候马西莫

0 投票
1 回答
642 浏览

django - Django 中的复合 OneToOneFields

我对 Django 相当陌生,我想我几乎了解了 ORM 的基本概念。但是,有一种特殊的情况,我看不到一个合理的解决方案。我有一个遗留数据库,我正在尝试为其编写一个 Django 应用程序。两张表的sql结构为:

第一个表不能更改,因为它会破坏很多代码(我没有写)。第二个表是我写的(因此是代理键)。在第二个('alerts')表中,(sid,cid)是唯一的。

问题是 (sid,cid) 是可以有效连接表的关键。应该如何重写模型,以便 Django 可以准确地捕获两个表之间的关系?我分别为 sid 和 cid 尝试了 OnetoOne,但这显然没有用,因为 OnetoOne 应该同时应用于 (sid,cid)。OnetoMany 也没有用,ForeignKey 也没有用,因为我需要 (sid,cid) 作为外键。看来 (sid,cid) 复合字段应该是 OnetoOne 但我不知道如何实现。

注意 - (sid,cid) 值将是 1-55,2-55,3-55,1-56,2-57,3-60 等类型。所有这些都是唯一的,并且只有一个条目两个表。

后期编辑:我猜 Django 不支持 Composite onetoone 键(至少这是 google-group 中的一个人所说的)。我迁移到 SQLalchemy,它完全按照我想要的方式表示模型(复合键等)

0 投票
1 回答
256 浏览

ruby - oracle上ruby、activerecord和composite_primary_keys的过度引用问题

由于为表之间的关联生成了 SQL,我收到了 Oracle 错误。不涉及复合主键,但在添加composite_primary_keys gem 之前没有出现此问题。

关联的外键被添加到 SQL 中,如下所示:

“bar_id”列确实存在。但是,当我们以这种方式将“Bar_id”放在引号中时,Oracle 会认真对待我们,并且会区分大小写。

如果我们只生成这个:

或这个:

我们会没事的。

这是我们得到的错误:

实际上,我已为 Composite_primary_keys gem 的 3.1.0 版本修复(读作“hacked”)此问题,但现在我需要升级到 4.0.0,代码更改非常重要,以至于我以前使用的简单黑客不再是如此明显。

知道如何解决这个问题吗?

使用的东西的版本:

  • 复合主键 4.0.0
  • 活动记录 3.1.0
  • activerecord-oracle_enhanced-适配器 1.4.0
  • jruby 1.6.3
0 投票
1 回答
7315 浏览

sql - 使用复合主键的 SQL UPDATE

如何使用复合主键进行更新?

前任:

FIELD_1ANDFIELD_2是构成主键的列。

看图片-->更新...

提前谢谢你,史蒂夫

0 投票
1 回答
955 浏览

java - 非原始属性的复合主键

我是 Java 和 Hibernate 的新手。我有复合键的问题。我正在尝试做这样的事情:

当我表演

然后抛出异常类型A和B不能插入数据库。是否有可能以某种方式告诉休眠不保存 A 对象而只保存 A id?我的方法绝对错误吗?我应该只在 C_PK 类中使用原始数据类型吗?

0 投票
1 回答
651 浏览

mysql - 使用 mysql 触发器更新复合主键的字段部分

我是 mysql 触发器的新手,我试图弄清楚如何为以下情况创建触发器。

我有一个具有以下结构的表:

这是表格与一些示例数据的外观:
在此处输入图像描述

我要创建的触发器应确保,对于使用给定组添加的每条新记录,订单字段都使用正确的订单索引进行更新。

因此,如果我要在组 1 中添加一条新记录,订单字段将自动更新为下一个订单,对于给定的示例,该订单将是 4。

0 投票
1 回答
3557 浏览

entity-framework-4 - Entity Framework 4.1 Code First,组合主键作为外键

我在使用 Entity Framework 时遇到问题,其中我有类似于以下样机的内容:

ClassD 是我遇到问题的地方,我希望表示 ClassC 上的主键的属性是 ClassD 上的主键,但也是外键引用。(假设上面的属性名与表列名相同)

在底层数据库中,ClassC 和 ClassD 的对应表是一对一的关系,而 ClassA 到 ClassC 和 ClassB 到 ClassC 是一对多的关系。

然而,当涉及到实体框架时,它似乎无法同时处理多个同名属性作为主键和外键,在它生成的底层 SQL 中,我可以看到它正在寻找列 ClassD_ClassAID、ClassD_ClassBID -有没有办法使用模型配置来指定正确的映射?

我努力了:

我也试过:

到目前为止,任何引入映射的尝试都会遇到

'元数据中已存在属性名称 xxx'。

0 投票
3 回答
208 浏览

sql - 主键约束的警告消息

我在其中一个包含员工信息的表中分配主键时遇到问题。该表中没有唯一列,我剩下的唯一选择是将三列组合作为主键。

  1. Warning! The maximum key length is 900 bytes. The index 'pk_hrempid' has maximum length of 1530 bytes.For some combination of large values, the insert/update operation will fail但是当我知道这将是将来插入数据的主要问题时,它会发出警告消息。这个警告有解决方案吗?

  2. 另一个问题是我可以将自动增量值作为唯一 id,推荐吗?我想确保它在未来不会出现问题,因为我有许多包含其他部门员工信息的表格。一些员工可能出现在两个或多个表中

任何帮助表示赞赏!

0 投票
1 回答
96 浏览

database-design - 可以使用复合主键来阻止您链接不相关的对象吗?

如果我有几个模型(命名你最喜欢的框架):

是否有可能有一个数据库约束,这将使得无法插入主键指向的Resaturant谁的一部分和谁的指向。基本上,保护我不会意外关联属于不同租户的对象。tenant_idTenantAfruit_availabletenant_idTenantB