жестко идентифицированный идентификатор и запрос - PullRequest
0 голосов
/ 15 ноября 2018

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

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

1 - status1
2 - status2

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

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

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

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

0 голосов
/ 16 ноября 2018

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

sql

0 голосов
/ 15 ноября 2018

Если 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», и использовать его значение вместо использования идентификатора, все еще сохраненного в жестком коде, его лучше сохранить в будущем.

...