Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Change column type numeric(18,5) to numeric(18,8)


Автор: gelo86 4.1.2008, 11:07
U menya jest uze tablica w baze dannyx. Adin stolbec imejet cenu i tip stolbca numeric(18,5). No w JAVA kode u menya cifri s 8 ciframi posle zapiatoj. Wazmozno li kak nibud izminit sto posle zapiatoj bylo ne 5 a 8 cifr? jest li takaja sql komanda katoraja eto zdelajet (tipa alter ....). Spasiba.

Автор: gelo86 4.1.2008, 11:49
Na etot stolbec iscio jest index. alter table price alter column sell numeric(18, 8) newypolnajetsya.

Автор: Servena 4.1.2008, 12:42
Лучше попробуй в Джаве обрезать пару цифр после запятой.
А если хочешь менять, то убери индексацию, меняй, а потом проиндексируй заново.

Автор: Akina 5.1.2008, 21:22
Цитата(gelo86 @  4.1.2008,  12:49 Найти цитируемый пост)
alter table price alter column sell numeric(18, 8)

И не должна работать.

Правильное решение: 
  1. создать новое поле нужного типа
  2. выполнить запрос на обновление, который скопирует данные из старого поля в новое
  3. удалить старое поле
  4. переименовать новое поле
  5. проиндексировать новое поле

Автор: kobra 6.1.2008, 10:05
ешо один вариант (кстати так работет студиа)
1. создать временную таблицу, копию изменяемой тавлицы.
2. удолить таблицу.
3. создать  новую.
4. перегнать данные из временной.
ну естественно при этом нужно будет учесть связи и индексы

Автор: Akina 6.1.2008, 19:09
kobra, По-моему, создать и скопировать одно поле быстрее, чем создать и скопировать таблицу целиком. 

Автор: kobra 8.1.2008, 09:55
ну, это спорный вопрос.
зависит от ситуации.
лично не тестировал.
думаю в большенстве случаев так оптималнее, тем более что и мелкомягкие так организовали.

Автор: Akina 8.1.2008, 18:45
Цитата(kobra @  8.1.2008,  10:55 Найти цитируемый пост)
лично не тестировал.
думаю в большенстве случаев так оптималнее

Где-то я такое уже слышал... "Нет, я лично Бродского не читал, но... " 

Автор: kobra 10.1.2008, 09:13
Цитата(Akina @  8.1.2008,  18:45 Найти цитируемый пост)
Где-то я такое уже слышал... "Нет, я лично Бродского не читал, но... "  
на провокацию не попадус smile времени нет.
кстати, прочитал внимателнее и удивился
Цитата(Akina @  5.1.2008,  21:22 Найти цитируемый пост)
Цитата(gelo86 @  4.1.2008,  12:49 )
alter table price alter column sell numeric(18, 8)
И не должна работать.

если нет обьектов ссылаюшихся на него, должен работать без проблем

Автор: Akina 10.1.2008, 10:56
Цитата(kobra @  10.1.2008,  10:13 Найти цитируемый пост)
если нет обьектов ссылаюшихся на него, должен работать без проблем 

Нет, потому что имеется потенция к изменению данных. Вот (18,5)->(21,8) - беспроблемная конвертация.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)