У меня есть таблица со строкой, которую нужно обновить. Эта таблица, однако, имеет триггер. Для простоты я ограничил триггер, чтобы представить мой случай.
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, однако строка изменилась
- Создан триггер с оператором обновления для случайного изменения атрибута в обновленной строке. Это также возвращает 1.
Что мне здесь не хватает, что меняет поведение этих возвращаемых значений. Является ли триггер обновления тем, который возвращает количество обновленных строк? Если так, как я могу получить исходное значение измененного ряда?