Обновить запрос застрял навсегда - PullRequest
0 голосов
/ 02 мая 2020

Я выполняю следующий запрос UPDATE sql к oracle серверу базы данных -

UPDATE TEST.SS_USER_CREDENTIALS SET CREDENTIAL = 'UUHs4w4Nk45gHrSIHA==';

После выполнения этого запроса в Oracle SQL разработчику, я вижу счетчик статуса выполнения запроса продолжает вращаться вечно и, следовательно, выход не возвращается. Однако следующий запрос SELECT для той же таблицы немедленно возвращает результат -

 SELECT  * FROM TEST.SS_USER_CREDENTIALS;

Не могли бы вы помочь понять, почему запрос UPDATE не выполняется?

Ответы [ 3 ]

0 голосов
/ 02 мая 2020

Если у вас не включена функция автоматической фиксации, вам может потребоваться запустить COMMIT;

В противном случае oracle обновления фактически не применяются к вашему набору данных

0 голосов
/ 02 мая 2020

возможно, у вас есть другая открытая незафиксированная транзакция для того же набора записей, поэтому они заблокированы для этой транзакции.

если вы их заблокировали, то же самое ОБНОВЛЕНИЕ выполняется в другой транзакции.

Просто совершите / откатите свои транзакции

0 голосов
/ 02 мая 2020

попробуйте с предложением where

UPDATE TEST.SS_USER_CREDENTIALS SET CREDENTIAL = 'UUHs4w4Nk45gHrSIHA==' where id='someid';

, поскольку я вижу вашу команду, если в таблице триллион строк, это займет время (так как я предполагаю, что это не должен быть внешний ключ)

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Если вы ищете временное решение, вы также можете изменить действие ON UPDATE на CASCADE и изменить свои идентификаторы, если у вас возникла проблема с внешним ключом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...