У меня есть таблица в Oracle SQL, чьи идентификаторы растут, последовательный порядок, но есть пробелы в идентификаторах из-за редактирования, например. идентификаторы в настоящее время что-то вродеOracle update query для обновления записей в последовательном порядке
22
23
24
32
33
44
...etc
проверить одну почты и предлагаемое решение было, как показано ниже:
update (select t.*, row_number() over (order by id) as newid) toupdate
set id = newid
Теперь мой вопрос: 1) Я предполагаю, что «ЕК "отсутствует в вышеуказанном запросе.
Обновленный запрос:
update (select t.*,
row_number() over (order by emp_id) as newid
from employee t) toupdate
set emp_id = newid;
2) Когда я запускаю выше запрос, он дает мне ошибку «операции данных Манипулирование не правовой с этой точки зрения».
Может ли кто-нибудь объяснить, как здесь работают упомянутые решения. может ли кто-нибудь опубликовать полный запрос на обновление. Благодарю.
погуглить эту ошибку он говорит, что вы обновляете вид, поэтому ваша «таблица» таблица или View? Кроме того, зачем создавать что-то, что имеет такое большое значение для числа? Действительно ли это имеет значение, что оно последовательное? https://community.oracle.com/thread/2485143?start=0&tstart=0 –
@RegencySoftware он обновляет виртуальный вид, т. е. «update (select ...)». Некоторые виртуальные представления могут обновляться, но не все. Я согласен с вами в том, что пробелы в номерах emp_id не должны считаться важными. –
Мой вопрос поднят из ранее предоставленного решения. Когда я попросил разъяснений, меня попросили задать свои сомнения. Поэтому я сделал это. Теперь ищем решение. Было бы замечательно узнать, что я знаю об этом обновлении. – XING