|
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
|
|
Запись в базу данных06.07.2021, 08:25. Показов 2525. Ответов 19
Метки нет (Все метки)
Добрый день! Подскажите пожалуйста, как сделать проверку на уникальность ? Если есть записи в базе данных и я хочу добавить снова, то как сделать, чтобы не записывались в базу повторно данные ?
0
|
|
| 06.07.2021, 08:25 | |
|
Ответы с готовыми решениями:
19
Запись данных в базу данных mdb с использованием DataAdapter и DataSet Запись в базу данных |
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
|
|
| 06.07.2021, 08:29 | |
|
ElKros, гуглите "уникальный индекс". И проверку перед вставкой тоже можно сделать.
0
|
|
|
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
|
|
| 06.07.2021, 09:00 | |
|
ElKros, для этого в БД придумали первичный ключ (который может быть составным (из нескольких столбцов), к слову).
0
|
|
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
|
|
| 06.07.2021, 09:01 | |
|
AndreyVorobey, не всякое поле требующее уникальности есть часть первичного ключа)
0
|
|
|
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
|
|
| 06.07.2021, 09:01 [ТС] | |
|
AndreyVorobey, проверка не по первичному ключу будет. Мне нужно сделать проверку по двум полям в одной таблице перед записью новых данных
0
|
|
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
|
|
| 06.07.2021, 09:05 | |
|
ElKros, при этом всё равно желательно иметь на этих полях уникальный индекс. Так как иначе может возникнуть ситуация, когда две параллельные транзации выполняют одну проверку, видят отсутствие дубликатов и вставляют эти дубликаты.
0
|
|
|
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
|
|||||||||||
| 06.07.2021, 09:10 [ТС] | |||||||||||
|
Usaga, я нашла вот такие примеры. Что они означают ?
0
|
|||||||||||
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
|
|
| 06.07.2021, 09:18 | |
|
ElKros, они означают, что вам нужно почитать что-нибудь по SQL и выбранной технологии доступа к данным (ADO.NET или ORM).
Я так понимаю, что вы используете EF?
0
|
|
|
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
|
|
| 06.07.2021, 09:23 [ТС] | |
|
Usaga, да, я использую EF
Добавлено через 1 минуту Usaga, базу данных я заполнила, осталось только сделать проверку перед добавлением
0
|
|
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
|
|
| 06.07.2021, 09:26 | |
|
ElKros, c EF эффективно это сделать не получится. Навешивайте индекс на эти поля.
При вставке, открывайте транзакцию с уровнем изоляции не выше Read Uncommitted, делайте проверку, вставляйте, снова проверяйте. Если дубликаты есть, то откатывайте транзакцию.
0
|
|
|
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
|
||||||
| 06.07.2021, 09:27 [ТС] | ||||||
|
Usaga, навесить индекс на поля - это как в этом примере ?
0
|
||||||
|
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
|
|
| 06.07.2021, 09:30 | |
|
Usaga, исходя из природы первичного ключа - эта ситуация все равно невозможна. и две параллельные операции, отправленные на сервак все равно станут в очередь и вторая просто должна вернуться с ошибкой, если у этих двух операций был новый одинаковый первичный ключ.
ElKros, в чем проблема сделать эти поля первичным ключом? вообще, в курсе, что это такое, и какие правила на него наложены?
0
|
|
|
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
|
|
| 06.07.2021, 09:31 [ТС] | |
|
AndreyVorobey, я не знаю какие правила наложены на первичный ключ
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 06.07.2021, 09:33 | ||
|
PS Фактически PK = UNIQUE + NOT NULL
0
|
||
|
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
|
|
| 06.07.2021, 09:35 [ТС] | |
|
AndreyVorobey, можно какой-то простой пример для понимания ?
0
|
|
|
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
|
||
| 06.07.2021, 09:39 | ||
|
0
|
||
|
5 / 4 / 1
Регистрация: 14.02.2018
Сообщений: 583
|
|
| 06.07.2021, 09:43 [ТС] | |
|
Usaga, я запуталась..
0
|
|
|
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
|
|
| 06.07.2021, 09:57 | |
|
Grossmeister, трудно лаконично и кратко изложить свой ответ по этому поводу, но, возможно, я не совсем понимаю данную ситуацию.
ElKros, а какой пример тебя интересует? допустим, есть таблица: Фамилия Имя Город если сделать первый и второй столбец в базе как первичный ключ, то как бы ты не хотела, дважды ты не сможешь внести одну и ту же комбинацию фамилии и имени. вопрос в том, где будет проходить проверка - на сервере или в модели. а сервер в любом случае вернет ошибку. Добавлено через 4 минуты Usaga, так мы ж не знаем, могут быть эти поля ключом или нет!) Добавлено через 41 секунду Ладно. видимо, я лезу не с теми советами в эту историю)
0
|
|
|
|
||||||
| 06.07.2021, 12:06 | ||||||
|
ElKros, Можно попробовать FirstOrDefault() с несколькими параметрами.
0
|
||||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||
| 06.07.2021, 16:08 | ||
|
Ключи, в общем случае, нужны для двух целей: 1) идентификации сущности и 2) связей сущностей между собой Обе эти задачи вполне покрывает уникальный идентификатор записи (Id), который никак семантически не связан с самой сущностью, но лишь гарантированно уникально ее идентифицирует (определяет) Индексы используются 1) для ускорения выборок и 2) избежания повтора значений в некоторой колонке (колонках) таблицы.
0
|
||
| 06.07.2021, 16:08 | |
|
Помогаю со студенческими работами здесь
20
Запись в базу данных
Запись в базу данных access Не добавляется запись в базу данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|