У меня есть база данных DB с населением таблицы, но без Первичного ключа. Это означает, что он может иметь дублирование данных. Например: у меня есть 5 семейств (f1, f2, f3, f4, f5) с разными членами внутри (и члены могут иметь одно и то же имя). Поэтому я могу иметь точно такой же тип записи более чем в 1 строке. Теперь я хочу редактировать только одного члена семьи, но он редактирует все дубликаты записей. Я хочу сделать это, просто хочу обновить базу данных один раз и только один раз. Другими словами, я хочу использовать команду UPDATE для выполнения только один раз. Как это сделать? Я использую Sql Server Express, VS2010, C# 4.0 (если эта информация имеет значение). Я уверен, что моя проблема может показаться глупой некоторым людям (возможно, многим). Но это всего лишь манекен моей проблемы. Любая помощь или предложение будут высоко оценены. СпасибоВыполнение команды Sql только один раз
ответ
Я знаю, что это не совсем то, что вы спрашиваете, но если серьезно, то самый простой вариант, чтобы изменить базу данных для имеют первичный ключ и используют это. Возможно, ключ идентификации ....
Без этого, вы можете обновить только одну запись, но у вас нет никакой гарантии, из которых запись. Вот почему первичные ключи - это фундаментальная концепция. Я предполагаю, что это на самом деле не имеет значения, если они все-таки, так что ....
Если вы действительно хотите продолжить работу без первичного ключа, необходимо использовать ключевое слово TOP, как показано здесь: How do I update n rows in a table?
Установите его
UPDATE TOP 1 ....
спасибо ... это сработало – Sandy
Добавить столбец идентификации, ID int с автоматическим приращением. Затем обновите, используя идентификаторы.
CREATE TABLE dbo.Family
(
Id int NOT NULL IDENTITY (1, 1),
FamilyName varchar(50) NULL
)
update dbo.Family set FamilyName = 'xxx' where Id = y
, безусловно, рассмотрит вопрос о добавлении столбца идентификации – Sandy
В случае, если Вы не можете добавить столбец идентификаторов по некоторым причинам:
UPDATE TOP (1) Families
SET Whatever = 'Your Value', ...
WHERE <Your where clause>
И как вы гарантируете, что это обновит правильную строку? –
Определите «правильный». Если строки все одинаковые, идея состоит в том, чтобы изменить любой из них. Если строки не идентичны, не делайте этого так: используйте предложение WHERE, которое получает правильную строку. – Andrew
Но обновление случайных записей намного проще, чем поиск правильной записи!Как я всегда говорю: «ТАК гораздо проще рассуждать дико, чем заниматься исследованиями и находить правильный ответ. – Jay
реальный ответ: Фикс структуры базы данных. Каждая запись должна иметь уникальный идентификатор. Добавьте поле автоинкремента или что-то еще.
Чтобы ответить на ваш вопрос, вы можете сказать «обновить верх (1) ...», чтобы обновить только одну запись. Но без какого-либо уникального идентификатора, как вы знаете, какая запись обновляется? Программа по существу обновит случайную запись. Который возвращает меня к пункту 1.
Редактировать: Упс, мой первоначальный ответ был для другого движка. Исправлено выше.
Я обязательно рассмотрю мой проект базы данных и рассмотрю добавление столбца id. Спасибо за вашу помощь – Sandy
- 1. Java - Выполнение SQL-запросов только один раз
- 2. Выполнение функции только один раз
- 3. Выполнение FadeIn обратного вызова только один раз
- 4. Выполнение некоторого кода запускается только один раз
- 5. Выполнение функции GLSL только один раз
- 6. Выполнение фонового процесса только один раз
- 7. Выполнение прыжка в мяч только один раз
- 8. Повторное выполнение таймера выполняется только один раз
- 9. Выполнение задания только один раз Использование кварца
- 10. Выполнение цикла foreach только один раз
- 11. Нажмите выполнение функции только один раз
- 12. Выполнение DOM-итерации только один раз
- 13. SQL Query только один раз
- 14. Выполнение команды один на один
- 15. Выполнение команды один раз после установки группы пакетов
- 16. Выполнение подвыражения один раз
- 17. Выполнение функции один раз
- 18. Выполнение команды Один раз, если найти совпадения файлов
- 19. Выполнение действия ровно один раз
- 20. Выполнять функцию SQL только один раз
- 21. SQL - Возвращение Каждой записи только один раз
- 22. sql count только один раз за shop_id
- 23. Выполнение команды несколько раз в разных папках
- 24. JQuery только один раз выполняется один раз
- 25. Java Timer только один раз один раз (только для сервера)
- 26. Выполнение SQL-задания Несколько раз
- 27. Глобальные команды в views.py обрабатываются только один раз
- 28. Android - Сервис - В начале команды Вызывается только один раз
- 29. Сертификат проверяется только один раз
- 30. Выполнение начального действия, которое выполняется только один раз
Если имена дублируются и у вас нет первичного ключа, как бы определить «одну» строку, которую вы хотите обновить? –
hmmm, проверив разные имена столбцов, и независимо от того, сколько строк, с которыми оно столкнулось, должно совпадать, оно должно обновить только один и выйти. но по вашему запросу один upvote – Sandy
Вам все равно придется отвечать на вопрос о *, * строке для обновления. –