Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с запросом [D7, MSSQL]


Страницы:   1 2

VadimSpb ©   (2006-08-16 19:58:00) 

Добрый день!
Выполняю следующий запрос в программе обновления БД:
  if tb_Name.IndexOf('Addresses')<>-1 then  // Читаем список названий полей
ElementConnection.GetFieldNames('Addresses',pl_Name);
if pl_Name.IndexOf('PostIndexID')=-1 then
 begin // Создаем поле PostIndexID
   ADOCommand.CommandText := 'ALTER TABLE Addresses ADD PostIndexID int';
   ADOCommand.Execute;
   ADOCommand.CommandText := 'UPDATE Addresses SET PostIndexID=1';
   ADOCommand.Execute;
 end;

Иногда получается интересный результат: поле создается, а заполняется 1 только 80-90% всех записей !
Иногда все отрабатывает нормально. В чем м.б. причина?


User_Name   (2006-08-16 20:59:00) [21]

2 VadimSpb   (16.08.06 20:54) [7]
Поиск по этому форуму рулит (должен)  :)


User_Name   (2006-08-16 20:56:00) [22]

Вообще, то я бы вынес всю эту байду в отдельную ХП.
Естессно ИМХО.


VadimSpb   (2006-08-16 20:54:00) [23]


> надо отрабатывать результат завершения таких операций.

Поподробнее можно?


User_Name   (2006-08-16 20:52:00) [24]

Работать то возможно и должно :).  ИМХО надо отрабатывать результат завершения таких операций.
А насчет запросов - представить трудно, что было бы с сотней активно работающих пользователей если бы "строго последовательно"


VadimSpb   (2006-08-16 20:46:00) [25]


> ALTER TABLE Addresses ADD PostIndexID int DEFAULT 1

В моей задаче не прокатит.
DEFAULT определяет значение по умолчанию для столбца если пропущено значение при добавлении строки.
У меня добавляется столбец и необходимо всем существующим строкам дать значение 1


VadimSpb   (2006-08-16 20:39:00) [26]

Согласен. Исторические корни :))
Все равно должно работать. Следом еще идут запросы, как они выполняются на сервере: строго последовательно?


User_Name   (2006-08-16 20:34:00) [27]

Если в программе действительно такой код, то почему не сделать

ALTER TABLE Addresses ADD PostIndexID int DEFAULT 1


VadimSpb   (2006-08-16 20:21:00) [28]

Если нового поля нет, создаем его и заполняем 1.
В результате иногда наблюдаю NULL в новом поле примерно на 10-20% записей.


Val   (2006-08-16 20:18:00) [29]

успевают добавить новые записи после апдейта и до проверки?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо