Oracle - откуда мы знаем, что поле не обновляется командой update - PullRequest
0 голосов
/ 08 октября 2018

Я ищу, если я выполнил команду обновления, чтобы обновить одну запись в Oracle с некоторым параметром, и все значения параметра одинаковы в значении полей.технически никакое значение не обновлено в этой базе данных записей.

в этой ситуации.получить какую-либо информацию о том, что запись не изменилась

Как и в таблице Employee, есть два столбца FirstName, SecondName и одна запись 'John', 'Smith'

Я выполнил следующую команду обновлениякак \ n

update Employee (FirstName,LastName) Values('John','Smith');

1 Ответ

0 голосов
/ 08 октября 2018

Oracle в приведенном вами примере (который синтаксически неверен и выдает ошибку) фактически обновил 1 строку.Вы можете проверить SQL%ROWCOUNT, и он скажет 1.Ему не важно, что это было то же значение, а только то, что там была запись, а не предложение WHERE, и она должна была обновить ее.Так оно и было.

И действительно ... это имеет смысл.Зачем читать каждую запись перед обновлением, чтобы увидеть, будет ли она обновляться до той же самой вещи.Быстрее просто написать, где написано, и двигаться дальше.

Единственный способ запретить Oracle НАСТОЯЩЕЕ обновление строки - добавить предложение WHERE, чтобы оно не соответствовало значениям, которые вы обновляете:

 UPDATE yourtable 
 SET FirstName = 'John', LastName = 'Smith' 
 WHERE FirstName <> 'John' AND LastName <> 'Smith';

Теперь, если вы установите SQL%ROWCOUNT вы получите 0.

Обновление, чтобы добавить: Действительно хорошо, напишите здесь на dba.stackexchange.com об этом

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