在使用它更新另一个值后,我需要将一个值设置为 NULL
I need to set a value to NULL after using it to update another value
我有这样的东西:
UPDATE table1 SET variable2 = variable3 WHERE variable2 IS NULL;
UPDATE table1 SET variable1 = variable2 WHERE variable1 IS NULL;
我遇到的问题是,当我用 variable3 的值更改 example variable2 时,我希望 variable3 变为 NULL。
我认为我们有 Oracle 12,我认为理论上类似的东西应该可以工作:
UPDATE table1 SET variable2 = variable3, variable3 = NULL WHERE variable2 IS NULL;
但是我们的 DBA 不希望我们使用这个....
有什么想法吗?
谢谢!
正如 Boneist 在评论中所说的那样,Oracle 极不可能在如此基础的层面上更改 UPDATE
声明以使您的 UPDATE
无法正常工作。
更重要的是,人们甚至不能开始那样想。由于没有人真正知道变化 will/might 是什么,最好的(也是唯一的)肯定是继续以当前版本最好的方式进行开发。
你的UPDATE
很好
我要做的唯一补充是检查您从中复制的列是否真的有任何价值。这将避免 "updating" 没有什么可更新的行(并且可能通过触发器搞乱你的审计列,如果你已经实现了):
UPDATE table1
SET variable2 = variable3
, variable3 = NULL
WHERE variable2 IS NULL
AND variable3 IS NOT NULL;
UPDATE table1
SET variable1 = variable2
, variable2 = NULL
WHERE variable1 IS NULL
AND variable2 IS NOT NULL;
我有这样的东西:
UPDATE table1 SET variable2 = variable3 WHERE variable2 IS NULL;
UPDATE table1 SET variable1 = variable2 WHERE variable1 IS NULL;
我遇到的问题是,当我用 variable3 的值更改 example variable2 时,我希望 variable3 变为 NULL。
我认为我们有 Oracle 12,我认为理论上类似的东西应该可以工作:
UPDATE table1 SET variable2 = variable3, variable3 = NULL WHERE variable2 IS NULL;
但是我们的 DBA 不希望我们使用这个....
有什么想法吗?
谢谢!
正如 Boneist 在评论中所说的那样,Oracle 极不可能在如此基础的层面上更改 UPDATE
声明以使您的 UPDATE
无法正常工作。
更重要的是,人们甚至不能开始那样想。由于没有人真正知道变化 will/might 是什么,最好的(也是唯一的)肯定是继续以当前版本最好的方式进行开发。
你的UPDATE
很好
我要做的唯一补充是检查您从中复制的列是否真的有任何价值。这将避免 "updating" 没有什么可更新的行(并且可能通过触发器搞乱你的审计列,如果你已经实现了):
UPDATE table1
SET variable2 = variable3
, variable3 = NULL
WHERE variable2 IS NULL
AND variable3 IS NOT NULL;
UPDATE table1
SET variable1 = variable2
, variable2 = NULL
WHERE variable1 IS NULL
AND variable2 IS NOT NULL;