当前位置: 首页 > 面试题库 >

合并主键-级联更新

曾皓
2023-03-14
问题内容

有没有一种方法可以将两个主键合并为一个,然后级联更新所有受影响的关系?这是场景:

客户(idCustomer int PK,公司varchar(50)等)

CustomerContacts(idCustomerContact int PK,idCustomer int FK,名称varchar(50)等)

CustomerNotes(idCustomerNote int PK,idCustomer int FK,注释文本等)

有时,客户需要合并为一个。例如,您有一个ID为1的客户,另一个ID为2的客户。您想将两者合并,因此现在2的所有内容都为1。我知道我可以编写一个脚本来更新所有受影响的表一个,但是我想通过使用级联规则使其更适合将来使用,因此我不必在每次添加新关系时都更新脚本。

有任何想法吗?


问题答案:

没有自动执行此操作的方法,但是您有几个选择,可以手动编写过程,也可以通过代码定期生成合并,也可以在运行时动态生成。为此,您可以使用INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTSandINFORMATION_SCHEMA.KEY_COLUMN_USAGEINFORMATION_SCHEMA.TABLE_CONSTRAINTSandINFORMATION_SCHEMA.COLUMNS and INFORMATION_SCHEMA.TABLES动态地构建该过程。

您还可以简单地将整个操作包装在一个事务中(无论如何是个好主意)。最后一步是从中删除要合并的客户,因此,如果您从未添加过的表上存在RI并尝试进行合并,则它将失败,因为您无法从中删除被合并的客户,因为存在依赖关系。在尚未添加到合并过程的表中记录。



 类似资料:
  • 我正在使用JPA(Hibernate)并试图用childs和复合键持久化整个新实体,但当持久化childs时,我在键中得到了null。表结构: 映射:

  • 我有两张这样结构的桌子。 表: 1) Obj表- 2) subobj表 我的场景是我有is_deleted列,在delete上我不想删除记录,而是想将is_deleted设置为true并更新所需的依赖项 详细场景: 1)考虑,用户正在从具有Id1.nowsubobj表中删除与obj_id1关联的行的obj表中删除一行,应该将is_deleted设置为true。 2) 子对象表包含自引用fk“父对象

  • 问题内容: 这是我的JPA结构: 电影(看级联类型): 评分: RatingId: 当我致电时,我得到了。如果删除级联,则合并调用不会引发错误。哪里可能有问题? 我认为这个问题与复合主键有关。在具有相同一对多关系但没有复合ID的另一个实体上执行时没有错误。 问题答案: StackOverflow是由循环关系引起的。为了避免出现异常,我在多对多表中将键标记为。

  • 问题内容: 我试图将我的SQL数据库中表的主键从现有键更改为复合键,其中不包括现有列。由于出现以下错误消息,因此以下代码无法正常工作: 删除主键: PRIMARY附近的语法不正确。预期为COLUMN,CONSTRAINT,ID或QUOTED_ID 添加主键: PRIMARY附近的语法不正确。 期望ID T-SQL代码: 编辑 我可以通过使用以下两个查询语句来完成此操作 我没有要求SQL“ DROP

  • 在我的jpa映射中,我试图将带有一个主键的父类映射到带有复合键的子类,但似乎插入了错误的表,它已经生成了2个表,但不幸的是我没有绑定外键(policy_value_summary_id) 我试图用策略值(子类)保存策略摘要值(父),如下所示 下面是输出给我的错误