我如何解决外键中的ORACLE问题

时间:2018-11-23 14:31:13

标签: oracle

我在oracle中有问题,需要帮助。我有以下查询:

ls -1d /some/folder/*/ | awk -F "/" "{print \$(NF-1)}"

如果我要删除第6行,该怎么办?

1 个答案:

答案 0 :(得分:0)

“如何更改主键的值,并以此为基础来更改此pk的外键?”

首先,您永远不需要这样做。这样的主键实际上只是标识行的数字,它们本身没有任何意义。这就像问您如何更改行中的ROWID

如果必须,您可以:

  1. 找到指向该表的外键并使用ALTER CONSTRAINT myconstraint DISABLE禁用它们
  2. 更新主表并使用UPDATE test1 SET id = mysequence.NEXTVAL WHERE id = :oldid RETURNING id INTO :newid捕获新的id值,假设它是由序列设置的。
  3. 使用新的ID更新其他表中的ID。
  4. 重新启用约束。

请注意,更改约束是DDL,并且将执行隐式提交,并且此方法将使表不受外键约束的保护。

第二种方法是:

  1. 在主表中插入新行并捕获新ID。
  2. 使用新的ID更新外部表中的ID。
  3. 删除主表中的旧行。

现在我考虑一下,第二种方法对我来说似乎更好。没有DDL,而且看起来更干净。