manishss Ответов: 2

Как проверить повторяющееся и не повторяющееся значение в SQL


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

Что я уже пробовал:

select * from tblemployee where pancard=@pancard

Suvendu Shekhar Giri

Запрос, которым вы поделились, является оператором SELECT. Можете ли вы поделиться здесь своим запросом на обновление?

manishss

я обновляю все записи, которые попадают в таблицу tblemployee.
до этого я рассказывал вам о проблеме, что происходит, когда я вставляю записи с новой картой pan, она работает нормально, но теперь я хочу изменить имя записи, скажем, в то время я не мог редактировать записи из-за моего вышеприведенного запроса.

2 Ответов

Рейтинг:
2

Wendelius

Если я вас правильно понял, ответственность за предотвращение дубликатов должна лежать на сервере базы данных. Это должно быть принудительно применено с помощью ограничения первичного ключа или уникального ограничения. Для получения дополнительной информации см. Создание Уникальных Ограничений[^]

Теперь при попытке добавить вторую строку, содержащую точно такие же значения для ключевых столбцов, которые уже существуют в базе данных, вы получаете исключение. Это исключение должно быть правильно обработано. В зависимости от ситуации это может быть программная ошибка или вы можете сообщить пользователю, что данные уже существуют, если входные данные исходят от пользователя.


Рейтинг:
0

Maciej Los

манишсс[^] писанное:
моя проблема заключается в том, что когда я вставляю записи в первый раз, это работает, но когда я редактирую запись в то время, это дает проблему.
я не могу отредактировать какое-либо значение против этого панкарда.


Вы забыли упомянуть о методе, который используете для редактирования (обновления) записей. Кажется, вы используете только INSERT заявление. Для работы с базами данных необходимо использовать несколько операций, имеющих общее название: МРАЗЬ[^].

Для вставки (создания) данных используйте ВСТАВЛЯТЬ[^] заявление
Для чтения данных используйте ВЫБИРАТЬ[^] заявление
Для обновления (редактирования) данных используйте ОБНОВЛЕНИЕ[^] заявление
Чтобы удалить данные, используйте УДАЛИТЬ[^] заявление.

Чтобы избежать дубликатов, вы должны проверить, существует ли запись! Видеть:
Существует (Transact-SQL)[^]
Подзапросы с существует[^]
Подзапросы с не существует[^]
ЕСЛИ...ELSE (Transact-SQL)[^]

Для получения более подробной информации, пожалуйста, смотрите: SQL: If Exists Update Else Insert-блог Джереми Кларка[^]


manishss

выберите * из tblemployee, где pancard=@pancard
видите, я м обновлении записей, Когда я получаю ноль записей в запросе выше в случае updatation.

Maciej Los

Нет, это не так! Оператор SELECT, как я уже упоминал, используется для чтения данных, а не для обновления. Пожалуйста, внимательно прочтите мой ответ.

manishss

я рассказываю вам сценарий после сохранения записи в базе данных в первый раз у меня есть gridview на кнопке редактирования все поля пришли и предположим, что я хочу изменить имя с abc на xyz в этом случае я не могу редактировать, потому что я получаю запись из моего запроса select. этот запрос является общим как для insert, так и для update.

Maciej Los

i m updating records when i m getting zero record in above query in updatation case.
Вы не можете обновить запись, когда она не существует! В этом случае вы можете только добавить новую запись.

vani suresh

Можете ли вы поставить весь свой запрос на обновление?.Чтобы мы могли проверить, в чем проблема.

Maciej Los

Перейдите по ссылке После "для получения более подробной информации...". там вы найдете возможные запросы.