问题标签 [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.
sql - 将表主键列大小更改为 255
我有一个表,主键列大小设置为50。由于一些新的要求,我需要将大小增加到255。经过网上搜索,我了解到如果列是其中的一部分,则无法更改列主键约束。因此,我采取了删除约束、更改列并重新添加约束的方法。但是,我仍然遇到一个小问题,我的原始列是非 Null 类型并且设置了默认值,但是现在当我尝试以下 sql 时,我收到错误“默认语法附近不正确”
谢谢你的帮助。贾维德
django - Django中一个关系的多个外键
我有两个这样的 django 模型:
如您所见,GradeValues 类中有 2 个主键,Review 中有 2 个外键。他们应该在 GradeValues 和 Review 之间建立一对多的关系。但它不起作用。这要怎么强求?我使用只读的 Oracle 数据库,所以我不能修改任何东西。
hibernate - NaturalId,它是如何工作的?
我在使用 nativeid 时遇到问题,我不知道我是否做得对。
我有一个名为 Aircraft 的类,它有一个生成的 id。但它的本机 id 是序列号(整数)和模型(自定义类),如下所示:
我从 XML 加载这个类并保存到数据库中,如下所示:
它可以很好地插入,但我的问题是当我使用相同的信息再次执行此代码时,Hibernate 会插入另一架飞机。我希望 Hibernate 只更新当前的注册表。
我重写了方法 equals() 来测试 serialNumber 和 Model 属性,但它从未被调用。
我不知道如何让 Hibernate 理解具有 serialNumber 和模型的对象是 NativeId。
提前致谢!
亚历山大
ruby-on-rails-3 - 用于不使用 Rails 命名约定的现有数据库的 Rails 应用程序
我想为为 Java Web 应用程序编写的现有数据库编写 Rails 应用程序。主键不是 ActiveRecord 期望的自动递增“id”列,而是基于两个特定属性的多部分键。此外,外键不是使用 Rails 约定命名的,但是有一个外键语句将该字段引用到另一个表中的字段。我希望它可以与 Rails 模型方法一起使用,例如 :has_many 和 :belongs_to。
是否有一个自动工具可以读取现有模式并基于该模式生成 ActiveRecord 模型(尤其是我所描述的),还是我必须手动完成所有操作?
mysql - Hibernate n:m extractHashCode 抛出 NullPointerException
使用休眠插入对象时出现以下异常。从数据库中读取就像一个魅力。我使用MySQL 5.5作为数据库提供程序和hibernate 3.6.5。
我有以下数据库架构:
其中cell和location中的id是主键,servingCell、neighbourCell和location是cellatlocation中的复合主键。
我要插入的类:Cell.java
位置.java
CellAtLocation.java
最后是主键映射本身 CellAtLocationPk.java
c# - 如何使用组合框在 C# 中选择复杂/复合键?
我对 C#.NET (Visual Studio 2010) 有疑问。我在 SQL2005 express 中有 2 个数据表:
- 主键为“楼号”的楼,
- 和Aparatment,它的主键是“楼号”(楼表的外键)+“公寓号”。(公寓是建筑的弱实体,其关键是复合)。
这两个表都是我作为 DataSet 导入项目的更大数据库的一部分。我想在选择楼号和公寓号时显示公寓详细信息。建筑物编号设置在文本框中(其值始终是由不同控件选择的建筑物编号),我想要一个组合框仅显示文本框中建筑物具有的公寓编号,而不是表格中的所有公寓编号(这导致像 1, 2, 3, 1, 4, 5, 1, 2, ... (因为它选择所有行))。并非所有建筑物都共享相同的公寓编号或相同数量的公寓,我应该即时添加/更改/删除。
选择构建部分已完成并正在运行。我只是无法仅显示当前的建筑公寓(至少是我需要的公寓号码)。
我不想(更确切地说是不允许)使用数据网格。仅限“详细”控件。
我怎么做?我对 C# 几乎没有经验,也不知道如何使用 DataSets “最大限度地”工作。我想过可能会创建一个可以给我结果的视图,但我不知道如何导入视图并将建筑物编号设置为参数。也欢迎任何其他理智的方式。
请帮忙。
非常感谢,谢伊。
database - 是否有可能有一个不覆盖被引用表的整个主键的外键?
我有两张桌子:
表 A:具有复合主键。
表 B:参考表 A
如您所见,表B
没有引用整个主键,但它肯定会始终引用表中的唯一条目,A
因为指定使用的月份有一个全局值,将用于A.Month
SQL 查询。
现在我的问题是,这是允许的还是我违反了数据库设计的几条规则?
我真的很感激一个很好的答案,因为我将在我必须为我的学士学位写的最终文件中使用它。
提前非常感谢!
hibernate - 休眠外键作为主键的一部分
我必须使用 hibernate 并且不太确定如何解决这个问题,我有 2 个具有 1..n 关系的表,如下所示:
我怎样才能用 Hibernate 管理这个???
我不知道如何管理第二个表的主键......
php - MySQL + PHP:获取多个/复合主键的last_id
我需要获取具有多列主键的表的最后插入 id。
- 这些表没有 AUTOCOUNT 列。
- 我正在使用参数化查询(任意顺序)
- 使用 PHP (5.3) 和 MySQLi 模块
- 任意 INSERT SQL 查询。(任何格式)
例如:
结果: $last_id = $mysqli->insert_id ?: getInsertedId() ;
此时我有一个名为 getPK() 的函数,它返回给我:
我现在需要的是实现getInsertedId()。在不使用 SQL 解析器的情况下,这可能是最简单的方法?
我很确定这个问题已经有了答案,但我找不到任何东西......
更新
我问这个问题的原因是因为我有一个类可以控制与 MySQL 数据库相关的所有内容(个人框架的一部分)。我有一种称为set()的方法,其中传递了查询(如 UPDATE、INSERT、DELETE 等)。我还有其他特定的方法,例如insert(),其中传递了数组。
我有一个存储last_inserted_id 的变量。以后可以随时调用该变量。我在具有多个主键的不同系统中有许多表。使用insert()方法时,设置 last_inserted_id 值没有问题,但是当某些系统使用set()方法时,我无法检索该值,我必须返回 0。我想更改该行为。
我想用上面的例子来简化我的解释。
更新 2
并非所有系统都由我自己控制。例如,其中一个系统调用soap 方法,在该方法中发送查询以执行(任何类型的查询)。这些由set()方法处理。然后还有其他soap方法可以检索最后一个id。为了保持一致性,我想返回该值。
entity-framework - 实体框架 - 具有复合主键的对象
我正在使用 Entity Framework 4,并且我最近将对象的主键之一更改为包含 2 列而不是 1(它曾经只有它的 id - Guid - 现在它有一个 id 和一个版本 - int) .
当我尝试创建另一个具有相同 ID 但版本不同的对象时,出现以下异常:
对数据库的更改已成功提交,但在更新对象上下文时出错。ObjectContext 可能处于不一致的状态。内部异常消息:AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突。在调用 AcceptChanges 之前确保键值是唯一的。
我查看了数据库,我确实有 2 个具有相同 id 但具有不同版本的对象,就像我想要的那样。
如何让 EF 配合这些设置?
edmx 文件中的实体设置:
我将提供任何其他需要的代码部分。
编辑:
表定义:
guid 在应用程序中设置。
编辑 2:
我的数据库中有 2 个这样的对象用于测试。我刚刚看到,在查看上下文的 Tests 集合时,其中一个重复了两次,而不是有 2 个不同的对象(具有不同的版本和日期)。