Нам нужно скремблировать некоторые значения полей в некоторой таблице, но между некоторыми полями существует логическая связь.Обмен значения столбцов в одном обновлении (Oracle)
Например, если таблица: таблица т (имя varchar2 (30), по электронной почте varchar2 (60)), значения электронной почты должна начинаться с полного значения имени:
Name Email
---- ----
Smith [email protected]
Так после схватки, он может быть
Name Email
---- ----
xubal [email protected]
Мы используем функцию dbms_random.string, поэтому для каждого называют его вернуть определенное значение.
Возможно ли выполнить один уникальный запуск для обновления и сохранить логическую связь между полями? (Я не могу использовать триггеры db)
В следующих двух вариантах, которые я пытался, Oracle возвращает старое значение поля имени, а не новое значение.
update t
set name=dbms_random.string('l',length(name)),
email=name || dbms_random.string('l',2) || '@any.com';
update t t1
set name=dbms_random.string('l',length(name)),
email=(select t1.name || dbms_random.string('l',2) || '@any.com'
from t t2
where t2.rowid = t1.rowid)
+1 Отличная идея для проживания в sql без plsql! –