Жестко идентифицированный идентификатор и запрос

Есть ситуация, когда у меня есть таблица с именем "status", которая содержит только идентификатор (PK) и имя (строка, уникальная). Кроме того, другая таблица имеет ссылку на этот статус (например, status_id)

скажем, есть два статуса:

1 - status1
2 - status2

Теперь я хотел бы вставить / обновить запись в таблице 2 (которая имеет ссылку на таблицу состояния). Каков наилучший способ сделать это, если я должен жестко указать идентификатор статуса, который я хотел бы установить, или я должен выполнить запрос по имени, затем получить идентификатор и назначить его после?

ЗАМЕЧАНИЯ: это также общий вопрос программирования (без прямых запросов SQL). Я не смог найти тег для него.

3 ответа

Решение

Если name столбец с уникальными значениями, вы можете использовать name поле, чтобы получить ID а затем использовать ID, Тем не менее, обычно name Столбец не содержит уникальных значений, поэтому необходимо использовать другие столбцы, чтобы получить только 1 идентификатор вместо нескольких.

Смотрите ситуацию:

ID name
1  John White
2  John White

Здесь, если вы используете name поле, вы получите 2 разных IDs возвращается, что приведет к ошибке. Вот почему вам нужен другой подход, как:

..
where name = @name and dateOfBirth = @dob and MothersName=@mothersname

чтобы убедиться, что один уникальный идентификатор возвращается.

Подводя итог, если вы уверены, что name поле содержит уникальные значения, используйте поле, чтобы получить ID вместо использования ID значение жестко закодировано. В противном случае вы можете попытаться создать ключ в конфигурационном файле, например "lookupid", и использовать его значение вместо использования идентификатора, все еще сохраненного в будущем, будет лучше поддерживать его в будущем.

Жесткое кодирование никогда не является хорошей идеей, но зависит от того, как часто значение изменяется в течение всего жизненного цикла кода... лучше использовать запрос

SQL

Имя не лучший выбор, чтобы проверить, какой идентификатор у него противоположный, потому что имя в большинстве случаев (может быть в одном и том же случае) может привести к дублированию, что приведет к избыточности строк, поскольку вы продолжаете добавлять новые столбцы, а также ухудшать его. лучшим выбором, как всегда, является первичный ключ таблицы или уникального столбца, вы можете иметь уникальное ограничение на ваш столбец для работы с дубликатами в случае, если вы хотите, чтобы он использовался как для поиска идентификатора

Другие вопросы по тегам