Лучшее решение для изменения ключа в записи при выборе на нем - PullRequest
0 голосов
/ 09 октября 2008

У меня есть команда UPDATE sql, которая изменяет поле даты / времени в конкретной таблице. В этой таблице есть два ключа, ProductionCode и TestTime, которые изменяются. Производственный код никогда не изменяется для конкретной записи, но часто пользователь обнаруживает, что он ввел неправильное время теста и ему необходимо его изменить.

У меня есть обновленное время, которое я могу получить из таблицы данных, однако мне нужно выбрать правильную запись для изменения. Чтобы сделать это, одним из моих критериев «где» должно быть текущее время, в которое эта запись установлена ​​в базе данных.

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

Так что я действительно ищу лучшее решение. Должен ли я просто сохранить результаты оператора SELECT, который используется для заполнения пользовательского интерфейса, и положиться на них? В настоящее время единственное место, куда попадают результаты моей базы данных, это непосредственно в таблицу данных. Или есть другой способ? Я избегал автоматического связывания данных в пользу ручного использования команд SQL, потому что мои сетки данных динамически конфигурируются и используют разные схемы от одной загрузки к другой, и единственными столбцами, которые гарантированно присутствуют, являются ProductionCode и TestTime.

Ответы [ 2 ]

3 голосов
/ 09 октября 2008

Добавить новый столбец «id», который содержит уникальный номер, который может идентифицировать каждую строку. Если вашим пользователям нужно изменить первичный ключ, вы, вероятно, не выбрали хороший первичный ключ?

0 голосов
/ 09 октября 2008

Я не знаю, какой язык вы используете, но то, как вы упоминаете «datagrid», заставляет меня думать о языке .NET.

Datagrids (и gridviews, и т. Д.) Имеют свойства, которые позволяют вам установить ключ для обращения к нему. Создайте индекс автонумерации для своего первичного ключа и используйте его, чтобы вернуться к нужной записи для обновления.

Ключ должен быть только для чтения, точка.

Добавление в это новое поле, надеюсь, не должно мешать вашему коду - но может. Но это правильный подход к вашей структуре данных.

Кроме того, в зависимости от вашего вкуса SQL, вы можете создать номер строки в ваших выборках. Это может привести вас к работоспособному решению, но это НЕ правильный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...