Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Sybase ASA, ASE, IQ Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 [Sybase IQ] как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
У меня собственно говоря 2 вопроса:
1)У меня есть колонка с типом данных decimal (19,2) нужно поменять на (19,4)
2) При добавлении колонки я могу указать место колонки (по умолчанию добавляет в конец таблицы), а я хочу например в середину конкретно после какой то колонки
23 май 17, 17:16    [20505138]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
Добрый Э - Эх
Guest
kolyady,

для начала - какой из Sybase-серверов у тебя?
далее - если нужен определенный порядок колонок, то таблицу для этого мучить не надо. надо создать по таблице представление с правильным порядком полей.
23 май 17, 17:31    [20505220]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
Dim2000
Member

Откуда: Москва
Сообщений: 5285

23.05.2017 17:16, kolyady пишет:

> У меня собственно говоря 2 вопроса:

Сервер-то какой ;)?

> 1)У меня есть колонка с типом данных decimal (19,2) нужно поменять на (19,4)

alter table dba.mycooltable modify mycolumn decimal(19,4) ;

> 2) При добавлении колонки я могу указать место колонки (по умолчанию
> добавляет в конец таблицы), а я хочу например в середину конкретно после
> какой то колонки

Можешь хотеть дальше ;).

Posted via ActualForum NNTP Server 1.5

23 май 17, 17:35    [20505235]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
Dim2000,
При альтере ошибка
Could not execute statement.

ALTER TABLE MODIFY <column> <datatype> is not supported.
--
(dblib\db_alter.cxx 411)
SQLCODE=-1013024, ODBC 3 State="HY000"
Line 1, column 1

alter table dbo.tb_sc_LiquidatD modify OSTATOK decimal(19,4)

а расположение я так понял никак указать нельзя, или кто то может все таки извращался и получилось, при добавлении или уже после , передвинуть в нужное место

ВАЖНО удалить таблицу и создать заново не вариант, надо именно при добавлении колонки в существующую табл
23 май 17, 18:27    [20505475]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
Добрый Э - Эх,

представление то понятно, вопрос именно как таблицу вымучить до нужного результата
23 май 17, 18:29    [20505482]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
Dim2000
Member

Откуда: Москва
Сообщений: 5285

23.05.2017 18:27, kolyady пишет:

> При альтере ошибка

У меня работает. Почему - догадайся сам ;).

> а расположение я так понял никак указать нельзя

Правильно понял. Тем более что порядок полей в таблице не важен.

Posted via ActualForum NNTP Server 1.5

23 май 17, 18:56    [20505564]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
Teck
Member

Откуда:
Сообщений: 36
kolyady
У меня собственно говоря 2 вопроса:
2) При добавлении колонки я могу указать место колонки (по умолчанию добавляет в конец таблицы), а я хочу например в середину конкретно после какой то колонки


А для чего это? В MySql вроде было что-то похожее
[FIRST | AFTER col_name ]
. Где вообще это может понадобиться?
23 май 17, 19:22    [20505599]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
Dim2000,
Ну хотелось бы услышать решение , а не загадки.
Не работает потому что в принцыпи не работает это мое мнение, если я не прав перепиши скрипт так как чтоб оно работало, строка самого альтера внизу ошибки.
24 май 17, 09:21    [20506454]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
Добрый Э - Эх
Guest
kolyady,

тебя же первым вопросом спросили - какой именно у тебя Sybase-сервер. Ибо ASA, ASE и IQ - детища совершенно разных разработчиков. Каждая - со своими парадигмами и особенностями синтаксиса SQL. Поэтому вещи, работающие в одной из этих СУБД, совершенно не обязаны работать и в двух других. Кроме того, даже внутри одной "линейки" могут быть отличия от версии к версии.
24 май 17, 09:28    [20506471]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
Teck,
И в ms sql, такая возможность есть и по моему в оракле тоже, я новичек в sybes iq, искал как в этой БД это делается, пока к сожелению не нашел :( возможно потому что инфы по данной БД намного меньше чем по остальным). Вот и вынес данную тему на обсуждение возможно ктото нарил таки как такое сделать.

Зачем это нужно, все очень просто есть таблици, есть на них же вьюхи, вьюхи постороены запросом select * from table, добавлю в конец колонку которую они видели всегда в начале, будет кипиш, поменять вьюху вместо звездочки на перечень колонок- это решение, но когда добавятся колонки в таблицу прийдется альтерить вьюху, со звездочкой альтерить не надо.

Короче если у когото есть конкретные решения этих вопросов буду рад их лицезренть, любителей загадок, кроссвордов и шарад прошу проходить мимо данного чата.
24 май 17, 09:30    [20506482]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
Добрый Э - Эх,
Ну теперь то ясно что IQ какие есть идеи?
24 май 17, 09:35    [20506498]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
Добрый Э - Эх
Guest
kolyady
Teck,
И в ms sql, такая возможность есть и по моему в оракле тоже
в Oracle точно нет. А в MS SQL Server-е, если посмотреть, что выполняет SSMS в результате "мышечных" перестановок порядка полей в таблице, то легко увидеть, что он делает CREATE TABLE с нужным порядком полей, перезаливает данные из старой таблицы в новую, навешивает на новую таблицу всю обвязку (индексы, триггеры, ограничения целостности, права доступа), после чего старую таблицу удаляет, а новую переименовывает в имя старой. То есть, это, по сути, тот вариант, который ты просил тебе не предлагать...


kolyady
вьюхи постороены запросом select * from table, добавлю в конец колонку которую они видели всегда в начале, будет кипиш.
ты это сам придумал или прочитал в документации / проверил на практике? Вообще-то, при создании представления по запросу select *, сервер распарсивает текущий список полей таблицы и в итоговый текст представления подставляет явное перечисление всех полей таблицы, в том порядке, что они есть на данный момент. "*" в этом слечае - не более чем синтаксический "рафинад" для упрощения труда ленивому прогруммисту. Соответственно, добавления поля в таблицу или смена их порядка не произведет на представление никакого эффекта и для учета этих изменений представление всё одно придется переделать...
24 май 17, 10:27    [20506731]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
Добрый Э - Эх
Guest
kolyady
Добрый Э - Эх,
Ну теперь то ясно что IQ какие есть идеи?

В глаза IQ не видел, но если верить синтаксической диаграмме, то должно быть что-то такое:
alter table <owner.table_name> alter column <column_name> decimal (19,4);
24 май 17, 10:38    [20506786]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
pand
Member

Откуда: Украина Харьков
Сообщений: 281
kolyady
Dim2000,
Ну хотелось бы услышать решение , а не загадки.
Не работает потому что в принцыпи не работает это мое мнение, если я не прав перепиши скрипт так как чтоб оно работало, строка самого альтера внизу ошибки.

Ух ты как стало модно вопросы задавать . а я на посторение не попал :)
24 май 17, 11:27    [20507052]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
Добрый Э - Эх,

тож не катит

Could not execute statement.

Syntax error near 'OSTATOK' on line 1
SQLCODE=-131, ODBC 3 State="42000"
Line 1, column 1

alter table dbo.tb_sc_LiquidatD alter column OSTATOK decimal (19,4)
24 май 17, 14:13    [20508002]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
[quot Добрый Э - Эх]
kolyady
Teck,

kolyady
вьюхи постороены запросом select * from table, добавлю в конец колонку которую они видели всегда в начале, будет кипиш.
ты это сам придумал или прочитал в документации / проверил на практике? Вообще-то, при создании представления по запросу select *, сервер распарсивает текущий список полей таблицы и в итоговый текст представления подставляет явное перечисление всех полей таблицы, в том порядке, что они есть на данный момент. "*" в этом слечае - не более чем синтаксический "рафинад" для упрощения труда ленивому прогруммисту. Соответственно, добавления поля в таблицу или смена их порядка не произведет на представление никакого эффекта и для учета этих изменений представление всё одно придется переделать...


По этому поводу возможно у твоей версии БД так и есть но в моей все что ты добавляеш в табл, вьюха тут же отображает ничего при "*" альтерить не надо и отображает так как было добавлено тобиш все новые в конец толкает.
А в данный момент я хочу перевести колонку OSTATOK из decimal (19,2) в decimal (19,4)

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

по факту

- нужен механизм (если он существует), чтоб альтериить существующие колонки БЕЗ дроп криэйт
- или на худой конец механизм чтоб переместить колонку в нужное место

Буду рад любым предложениям
24 май 17, 14:30    [20508050]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
pand
Member

Откуда: Украина Харьков
Сообщений: 281
kolyady
Teck,
И в ms sql, такая возможность есть и по моему в оракле тоже, я новичек в sybes iq, искал как в этой БД это делается, пока к сожелению не нашел :( возможно потому что инфы по данной БД намного меньше чем по остальным).

возможно Вы не пробовали искать
24 май 17, 14:53    [20508164]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
antand
Member

Откуда: Москва
Сообщений: 578
kolyady,

Думаю новых предложений не будет.
Ибо Документация
The ALTER TABLE statement can change many characteristics of a table—foreign keys can be added or deleted, and so on. However, you cannot use MODIFY to change table or column constraints. Instead, you must DELETE the old constraint and ADD the new one. In all these cases, once you make the change, stored procedures, views, and any other item referring to this column will no longer work.

Т.е. менять через DROP ADD. Думаю колоно-ориентированная архитектура IQ влияет
А представление нужно делать как нужно.
Что за пользователи у Вас, которые относятся к этому ненормально? В чем они работают?
Они к номеру поля что-ли привязываются в выборке? Если так, то это ненормально.
Привязка в источнике данных должна идти к названию поля. Нормальное клиентское приложение умеет каждую колонку привязать к нужному полю по названию, а сами колонки расставить как надо пользователю. Независимо от того как они там в базе созданы
По вашему получается что один раз представление с *, я должен пересоздавать таблицы в него входящие так, чтобы обязательно соблюсти порядок полей, который заложен у пользователя! в его клиентской программе. Это очень "удобно" для разработчика базы
24 май 17, 15:22    [20508281]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
Sergey Orlov
Member

Откуда: СПб
Сообщений: 4191
kolyady,
А вообще про какую субд идет речь, я так в постах и не нашел...
24 май 17, 15:54    [20508417]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
pand
kolyady
Teck,
И в ms sql, такая возможность есть и по моему в оракле тоже, я новичек в sybes iq, искал как в этой БД это делается, пока к сожелению не нашел :( возможно потому что инфы по данной БД намного меньше чем по остальным).

возможно Вы не пробовали искать


прекрасный пост, но там нету того что я ищу, ну или я слепой :)
укажите незрячему путь :)
24 май 17, 16:02    [20508476]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
Sergey Orlov,
SYBES IQ
24 май 17, 16:03    [20508480]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
pand
Member

Откуда: Украина Харьков
Сообщений: 281
kolyady,

Если Вы по этой сслыке не видите доку по Sybase IQ , то я Вам ничем уже не помогу.
Если Вы хотите чтобы я за Вас искал ответы на ваши вопросы , то сначала нужно обсудить стоимость работ.
24 май 17, 16:35    [20508650]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
pand
kolyady,

Если Вы по этой сслыке не видите доку по Sybase IQ , то я Вам ничем уже не помогу.
Если Вы хотите чтобы я за Вас искал ответы на ваши вопросы , то сначала нужно обсудить стоимость работ.


Данный форум не есть комерческий, хотите заработать предлагайте себя на фрилансерских сайтах.
Искать что то я Вас не прошу, я спрашиваю у людей которые знают как решить данную проблему, кинуть ссылку на доку (не будучи уверенным в том что там есть нужная инфа) не есть помощь , не знаете - не пишите.
24 май 17, 16:45    [20508704]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
White Owl
Member

Откуда:
Сообщений: 12121
kolyady,

Модератор с подозрением смотрит на тебя.
24 май 17, 18:27    [20509100]     Ответить | Цитировать Сообщить модератору
 Re: как изменить тип колонки и указать расположение колонок  [new]
kolyady
Member

Откуда:
Сообщений: 59
White Owl,

В чем суть подозрений?
25 май 17, 09:57    [20510296]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Sybase ASA, ASE, IQ Ответить