#mysql #sql #asp.net-core-3.1
#mysql #sql #asp.net-core-3.1
Вопрос:
Структура таблицы Id(Guid) | Name(string) | Date(Date) | Address(string)
с ограничениями PRIMARY KEY (Id), UNIQUE KEY Rec_Unique (Name,Date)
Я пытаюсь вставить или обновить дублирующийся ключ. Я использую dapper, и ExecuteAsync возвращает строки, выполненные как 1 или иногда 2.
Как заставить его возвращать 0 вместо этого, когда ключи существуют, я думаю, что он смотрит на Id и во время вставки, но я хочу, чтобы он просматривал как id, так и (имя, дату) перед обновлением
Запрос, который я выполняю с помощью dapper, является
insert into exam (Id, Name, Date, Address)
values (@Id, @Name, @Date, @Address)
on duplicate key update Date = @Date, Address= @Address
Комментарии:
1. Как заставить его возвращать 0 вместо этого. Почему? Строка либо вставляется (затронута 1 строка), либо обновляется (затронуты 2 строки). Если затронуты нулевые строки, возникает ошибка.
2. » Я думаю, что он просматривает Id и во время вставки, но я хочу, чтобы он просматривал как id, так и (имя, дату) перед обновлением «. Он рассматривает оба, но ваши данные не могут нарушать оба (поскольку тогда MySQL не будет знать, какую из двух строк обновлять). Также имейте в виду, что, если идентификатор существует, он в настоящее время не обновит имя! (например, если вы вставляете «1, лила, сегодня, Марс», и «1, Кришна, вчера, плутон» существует (нарушение ключа для id = 1), эта строка изменится на «1, Кришна, сегодня, Марс», а не «1, лила, сегодня, Марс». Но это не имеет ничего общего с возвращаемым значением 0/1/2.