Django: Обновление полей, выбрасывает «Сохранить с update_fields не влияет ни на какие строки». Даже если строка обновлена - PullRequest
0 голосов
/ 20 марта 2020

У меня есть таблица со строкой, которую нужно обновить. Эта таблица, однако, имеет триггер. Для простоты я ограничил триггер, чтобы представить мой случай.

Alter TRIGGER Cow_UpdateTrigger

ON Cow FOR update AS 

select * from Cow

Этот триггер вызывается при обновлении, однако триггер не изменяет поля в таблице коров.

В приведенном ниже коде я пытаюсь обновить имя коровы. При сохранении выдается следующее исключение:

«Сохранение с полями update_fields не затронуло ни одной строки». Однако имя коровы на самом деле было обновлено.

cow = Models.Cow.objects.get(pk=1)
cow.name = "Life"
cow.save(update_fields=["name"]) # Raises Error, However successfully updates fields. 

Дальнейший анализ с помощью курсора.

c = cursor.execute("""Update COW
 set
 cow_name = "Love"
 where COW_ID  = '1'
""")
c.rowcount

Следующий код запускается с тремя различными сценариями запуска обновления ios. Число возвращаемых строк, отражающее измененные строки, отличается.

  1. Триггер удален, и обновление выполнено. Количество строк = 1
  2. Триггер создается с помощью оператора выбора. Количество строк = -1, однако строка изменилась
  3. Создан триггер с оператором обновления для случайного изменения атрибута в обновленной строке. Это также возвращает 1.

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

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