Oracle删除和插入

时间:2015-12-11 21:21:51

标签: sql oracle

我想更新链接到一行的类别。一行可以链接到多个类别。为了直观地表示这一点,请查看以下简化方案:

对象表

id    name
----------
1     Chair
2     Computer

类别表

id    category
--------------
90    Asset
100   Furniture
200   Electronics
300   Garbage

链接表

obj   cat
---------
1     90
1     100
2     90
2     200

所以我现在在数据库中有这些值。但现在我决定将Chair记录更新为100 | Furniture300 | Garbage

如何有效地进行此操作?我知道我可以删除所有相关链接,然后添加新链接,但必须有一种更有效的方式来执行此操作。

1 个答案:

答案 0 :(得分:0)

您可以选择几种不同的选项:

  1. 如果Linking Table中的行数没有变化,请更新现有行。在这种情况下,您可以将1 90的行更新为1 300。这里的挑战是确保要删除的行数等于您计划插入的行数。

  2. 删除不再有效的那些,并为缺少的行插入新的。请注意,在这种情况下,1 100行仍然保持不变,就像第一种情况一样,尽管这并不需要要删除的行数=要插入的行数。

  3. Nuke n Pave将是您最初建议删除所有数据并重新开始可能过度杀伤的内容。