问题标签 [composite-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 投票
3 回答
5449 浏览

nhibernate - NHibernate 复合键

我创建了一个复合键,它正在工作,但理想情况下我希望在行类中直接单独的字段。

我这样做的当前方式如下:

我想知道是否有更好的方法来做到这一点?可能在 NHibernate 配置文件中。

我当前的配置文件如下:

0 投票
3 回答
707 浏览

php - 复合键的替代方案

我有数据库结构,其中所有表都有两列作为主键。

例如,表 Author 有两列,例如 AutherId,它是一个自动递增的数字,而 pc_id 是该 pc 唯一的,它们是表的复合键。但是当涉及到关系时,我必须为每个关系定义两列。并且由于我打算使用 Docrtine (PHP ORM),所以这样使用它有点问题。

所以我想知道我是否可以生成一个唯一的 id(也结合 pc_id)并将其用作主键。

php 代码就像 time() 。兰德(1000,9999)。$pc_id

这样 id 是通过连接时间 + 1000 到 9999 之间的随机数和 pc_id 生成的(pc_id 也是从 1 开始的数字)。但这会产生一个需要 bigint 存储的 20 位数字(当 pc_id 为 6 位时)

有没有一个很好的选择

问候

0 投票
4 回答
55435 浏览

entity-framework - 如何首先在 Entity Framework 4 代码中映射复合主键?

我首先要掌握 EF4 代码,并且到目前为止我很喜欢它。但是我无法将实体映射到具有复合主键的表。

我尝试过的配置如下所示:

引发此异常:无法推断实体类型“订阅用户”的键。

我错过了什么?

0 投票
2 回答
1067 浏览

java - JPA 2.0、PostgreSQL 和 Hibernate 3.5 中的混合代理复合键插入

首先,我们使用 JPA 2.0 和 Hibernate 3.5 作为 PostgreSQL 数据库上的持久性提供程序。

我们通过 JPA 2.0 注释成功地将数据库序列用作单字段代理键的自动生成值,并且一切正常。

现在我们正在实现一个双时态数据库方案,该方案需要以下方式的混合键:

现在我们有一个问题。你看,如果我们INSERT是一个新元素,该字段id是自动生成的,这很好。只有,如果我们想要UPDATE在这个方案中的字段,那么我们必须更改validTimeBegin列而不更改id-field 并将其作为新行插入,如下所示:

在更新行之前:

在恰好 2010-05-01-10:35:01.788 服务器时间发生的行更新之后:

所以我们的问题是,使用自动生成的字段序列这根本不起作用,id因为当插入新行时,id 总是自动生成的,尽管它确实是复合键的一部分,有时应该表现不同。

所以我的问题是:有没有办法通过 JPA 告诉休眠停止自动生成id-field,以防我想生成同一个人的新变种,并在其他情况下照常继续,或者我必须用自定义代码接管整个 id 生成?

在此先感谢,杰拉德

0 投票
3 回答
1517 浏览

asp.net - NHibernate 使用复合键更新

我有一个表格定义,如下所示:

执照

ClientId 和 Type 一起唯一标识一行。我有一个映射文件,如下所示:

如果客户使用许可证创建用户,我需要更新表中的 Used 列。当我在映射 xml 中将 ClientId 列设置为该表的 id 列时,我得到了 TooManyRowsAffectedException。

您能否让我知道如何在映射级别设置复合键,以便 NHibernate 可以根据 ClientId 和 Type 进行更新。

类似于:Update License SET Used=Used-1 WHERE ClientId='xxx' AND Type=1

请帮忙。

谢谢, 马赫什

0 投票
1 回答
732 浏览

replace - multi_index 复合键替换为迭代器

无论如何要遍历 boost::multi_index 中的索引并执行替换?

0 投票
2 回答
7243 浏览

mysql - 如何识别任何 Mysql 数据库表中的复合主键?

如何识别任何 Mysql 数据库表中的复合主键?或者

编辑 2 应该使用什么 sql 查询来显示包含复合主键的任何表的 indees?

我在 mysql 数据库中有很多表具有 2 或 3 个主键的复合键,我正在使用 phpmyadmin,我必须编写一个 php 脚本来识别哪个表具有复合键,现在我可以识别主键使用查询的表

这给了我我想要的东西,但现在我怎样才能找到我有复合键的索引?

编辑 1

在丹尼尔图像评论的上下文中,用于查看 phpmyadmin 中的复合主键

复合主键在 phpmyadmin 中如下所示: 替代文字

0 投票
6 回答
12643 浏览

java - 休眠自动增量不起作用

我的数据库中有一个用 Identity(1,1) 设置的列,我无法让休眠注释为其工作。当我尝试创建新记录时出现错误。

在我的实体中,我有以下内容。

但是当我尝试添加新记录时,出现以下错误。

当 IDENTITY_INSERT 设置为 OFF 时,无法在表“MemberSelectedOptions”中插入标识列的显式值。我不想将 IDENTIY_INSERT 设置为 ON,因为我希望数据库中的标识列来管理这些值。

运行的 SQL 如下;您可以清楚地看到插入的位置。

我错过了什么?

0 投票
2 回答
1526 浏览

.net - LINQ 对复合键的可悲处理

我有一个表,它有一个由两个 int 字段和一个 varchar(50) 字段组成的复合键。我将复合键设为我的主键,而我通常不会这样做。是的,是的,是的,我对逻辑键与代理键的辩论非常熟悉,但我一定在我上桌的那天做了一些重药(不是真的),因为我采用了逻辑键方法使用代理(我几乎总是这样做)。

我的问题:LINQ 不允许我对作为复合键一部分的 varchar(50) 列进行更新。它抛出异常“属性‘值’是对象的关键信息的一部分,不能被修改。” 'Value' 是该字段的名称(请不要教我在列名中使用保留字......就像我已经说过的那样,那天我正在服用严重的药物)。

那么,除了在岩石和坚硬的地方之间,这给我留下了什么?有问题的表实际上确实有一个唯一的标识列(即使它不是主键),并且该列被用于另一个表的外键。所以,呃,我不能很容易地做一些黑客攻击,比如删除有问题的记录并重新添加它,因为这会迫使我跟踪其他表中的 fk,然后再重新添加它们。什么样的恶梦...

任何人都知道一个简单的方法来解决这个问题,而不会强迫我对我的表结构进行大量更改?

0 投票
1 回答
702 浏览

c++ - 如何使用 Composite_key 为 multi_index_container 编写自定义谓词?

我用谷歌搜索了boost的人,但没有找到任何例子。可能这是一个愚蠢的问题......无论如何。

所以我们有这个人的著名电话簿:

my_custom_comp() 应该如何?我的意思是这对我来说很清楚然后它boost::multi_index::composite_key_result<CompositeKey>作为一个参数(由于编译错误:)),但是在那种特殊情况下 CompositeKey 是什么?

提前致谢。