Жестко идентифицированный идентификатор и запрос
Есть ситуация, когда у меня есть таблица с именем "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
Имя не лучший выбор, чтобы проверить, какой идентификатор у него противоположный, потому что имя в большинстве случаев (может быть в одном и том же случае) может привести к дублированию, что приведет к избыточности строк, поскольку вы продолжаете добавлять новые столбцы, а также ухудшать его. лучшим выбором, как всегда, является первичный ключ таблицы или уникального столбца, вы можете иметь уникальное ограничение на ваш столбец для работы с дубликатами в случае, если вы хотите, чтобы он использовался как для поиска идентификатора