繁体   English   中英

是否可以像这样更新?

Is it possible to update like this?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有三张桌子。 Tab_1,Tab_2和Tab_3。 Tab_2和Tab_3在这里取决于Tab_1。 在其余表中,Tab_1的PK_t1表示为FK(外键)。

现在,我知道我必须更新PK_t1(主键)列。 如果我更新主键列,则子表(Tabl_2和Tab_3)的FK列也应更新。

---------------------------------------------
Example

Tab_1
ID(PK)| Cal2 |
---------------|
101    | abc   |
102    | acw   |
103    | bhj   |


Tab_2
----------------
Address| Cal2(FK_ID)
----------------
ljjkkl | 103
ghhj   | 101
dfgjdl | 101

Tab_3
----------------
Cal1   | ID(FK_ID)
----------------
n233b  | 101
g55hhj | 103
d867hh | 102

现在,如果我想更新表Tab_1为

Tab_1
ID(PK)| Cal2 |
---------------|
951    | abc   |
952    | acw   |
953    | bhj   |

这个(更新)是否也会导致子表。

可能吗? 或者我应该采取哪些必要的措施来实现这一目标。

提前致谢...!

2 个回复

使用数据库引擎innodbon updateon delete on update创建带有选项的表

有关外键约束,请参见此处

这是关于外键关系进行层叠更新的原因之一。 这样,您将能够更新Table1中的PK,它将自动传播到其子表。 该约束看起来像:

Alter Table Table2
    Add Foreign Key ( FK_ID )
        References Table1( Id )
        On Update Cascade

如果未启用Cascade Update,则有两个选择:

  1. 禁用所有外键约束,更新表1中的PK,更新子表,然后重新创建外键约束。
  2. 使用所需的ID将新值添加到Table1中,然后在子表上运行更新。 例如,如果要将PK值101更改为951:

    Begin Transaction

    Insert Table1( Id, Cal2 )
    Values( 951, 'Foo' )

    Update Table2
    Set FK_ID = 951
    Where FK_ID = 101

    Update Table3
    Set FK_ID = 951
    Where FK_ID = 101

    ...

    Delete Table1 Where Id = 101

    Commit Transaction

第二种方法的不足之处在于,新的ID值都不能与现有PK值冲突。

2 Java JTable是否经常更新?

我正在编写一个能够处理频繁更新的JTable。 通常,此JTable包含约1000行数据,并且某些列会经常更新,因为它们的值是从市场价格波动很大的股票价格中得出的。 我面临的问题是,当更新大量行(例如80%)时,JTable在20-30秒左右的时间内变得非常慢,分析器显示EDT线程非常忙 ...

3 是否可以更新提取的数据

我编写了一些代码来从数据库获取记录,处理它们,如果出现问题,则会在数据库中写入错误消息。 在代码的最后,我从数据库中删除所有记录,其中错误字段(在数据库中)为null。 提取/处理/删除是在多个线程中同时完成的,因此在运行此代码时,可以通过数据库中的另一个线程删除记录。 是否有可能只 ...

4 如何检查记录是否更新?

我正在尝试获取上周的更新记录数。 但是我在解决问题上遇到了麻烦。 例如:我有一个表格“ Org” 第1周: 第2周: 我正在尝试获取已更新的记录。 在上面的示例中,ID为123的record1的地址已更新。 目前,我正在以效率低下的方式进行检查。 查询: ...

7 是否有MySQL关闭更新?

我有一张没有主键或唯一键的表。 我想更新按日期排序的第n条记录中的某些值。 mysql更新限制没有偏移量(如限制1,2),我该怎么做? ...

8 EntityState是否正在更新?

在CFE中更新记录时正确的方法是什么? 我们正在使用webapi控制器,基于此链接 ,感谢AngularJS开发了客户端。 我在更新已经存在的记录时遇到麻烦,我的代码由于CodeFluentDuplicateException而失败。 我在这里读到EntityState不应该手动更 ...

9 是否可以通过 API 更新 WikiData?

我有几千个编辑可以做: 为未提供的维基百科页面添加 wikidata id 编辑一些(那些和预先存在的)的属性实例 这是我通过 NLP 分析页面提取的数据。 我不倾向于手动执行此操作-是否有 API 可以执行此操作? ...

10 这个linq更新是否正确?

我必须在这张桌子上运行一次或者可能每隔几个月更新一次。 基本上允许其他引用的程序运行得更快。 我真的认为这个更新看起来正确,但它并没有改变数据。 我做错了什么? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM