Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавления поля / 14 сообщений из 14, страница 1 из 1
29.12.2019, 17:49
    #39909622
aseylanyan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
Здравствуйте в чем может быть ошибка
Пытаюсь добавить поле в существующую таблицу

ALTER TABLE dbo.Table1 ADD Поле_1 float AFTER Поле_5

Ругается на AFTER, если без AFTER то нормально в конце добавляет, а если надо после конкретного столбца то AFTER не проходит
SQL сервер 2012
...
Рейтинг: 0 / 0
29.12.2019, 17:55
    #39909624
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
aseylanyan
а если надо после конкретного столбца то AFTER не проходит

Тебе это не надо.
И никому не надо.
...
Рейтинг: 0 / 0
29.12.2019, 18:45
    #39909630
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
aseylanyan
Здравствуйте в чем может быть ошибка
Пытаюсь добавить поле в существующую таблицу

ALTER TABLE dbo.Table1 ADD Поле_1 float AFTER Поле_5

Ругается на AFTER, если без AFTER то нормально в конце добавляет, а если надо после конкретного столбца то AFTER не проходит
Это откуда такой синтаксис?
Посмотрел ALTER TABLE нету там никакого AFTER
...
Рейтинг: 0 / 0
29.12.2019, 19:51
    #39909642
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
AFTER Поле_5 -- это в какой-то другой СУБД. Видимо, в этой СУБД никак без этого, в отличие от MSSQL.
...
Рейтинг: 0 / 0
29.12.2019, 21:09
    #39909661
aseylanyan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
НУ тогда подскажите, а есть возможность добавить поле не в конце, а после конкретного поля.
...
Рейтинг: 0 / 0
29.12.2019, 21:32
    #39909668
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
aseylanyan
НУ тогда подскажите, а есть возможность добавить поле не в конце, а после конкретного поля.
Нет. Только пересозданием таблицы.

Отучайтесь писать select * и не нужно будет шаманить с порядком столбцов в таблице.
...
Рейтинг: 0 / 0
29.12.2019, 21:49
    #39909669
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
invm


Отучайтесь писать select * и не нужно будет шаманить с порядком столбцов в таблице.

К сожалению, select * не единственный случай, когда порядок столбцов важен.
Сходу - Switch, temporal таблицы.
В sql server добавили некое количество функционала, требующего определённого порядка полей, но не дали возможности этим порядком управлять.
...
Рейтинг: 0 / 0
29.12.2019, 22:01
    #39909671
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
msLex,

Мне думается, что у ТС именно select *
...
Рейтинг: 0 / 0
29.12.2019, 23:19
    #39909678
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
msLex
К сожалению, select * не единственный случай, когда порядок столбцов важен.
Сходу - Switch, temporal таблицы.
Для Switch это не проблема, т.к. его не делают для совершенно различных таблиц, которые нужно привести к общему виду.
Таблицу, которую нужно присоединить, просто делают такой же, как секционированная таблица.
Или, если в обе таблицы добавляют поле, оно добавляется в конце, в обоих случаях.

Абстрактно, было бы неплохо двигать поля как вздумается, но, как я себе представляю, это физически невозможно без пересоздания таблицы, либо без поддержки двух указателей на порядок - "физический", и "презентационный", что требует указания идентификаторов столбца на каждой станице (то есть в заголовке каждого слота). То есть это требует кардинальных изменений в движке.

Как альтернатива, можно было бы сделать перемещения столбцов в ALTER TABLE (и указания по месту размещения новых столбцов), но делаться это всё равно будет пересозданием таблицы.
И т.к. это нужно редко, то, видимо, посчитали достаточным, что это можно сделать через UI-приложение (то есть в SSMS).
...
Рейтинг: 0 / 0
29.12.2019, 23:50
    #39909685
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
alexeyvgКак альтернатива, можно было бы сделать перемещения столбцов в ALTER TABLE (и указания по месту размещения новых столбцов), но делаться это всё равно будет пересозданием таблицы.Да как бы можно на уровне метаданных всегда зафиксировать маппинг, типа, что пятое поле теперь седьмое. Данные зачем перелопчивать?
...
Рейтинг: 0 / 0
30.12.2019, 01:05
    #39909690
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
Гавриленко Сергей Алексеевич
alexeyvgКак альтернатива, можно было бы сделать перемещения столбцов в ALTER TABLE (и указания по месту размещения новых столбцов), но делаться это всё равно будет пересозданием таблицы.
Да как бы можно на уровне метаданных всегда зафиксировать маппинг, типа, что пятое поле теперь седьмое. Данные зачем перелопчивать?Хе, вы представьте, что таблицу подключают как секцию к другой таблице, и вот в части страниц один физический порядок полей, а в части - другой. Притом, т.к. границы будут меняться, это нельзя зафиксировать для секции.

То есть вот это - "пятое поле теперь седьмое" - нужно прописывать в каждой странице. И не забываем записи в лог - их это тоже коснётся.

Это слишком сильное изменение формата файлов БД, и инжина, который МС менять не любит, предпочитая менять ядро дот-нет костылями.
...
Рейтинг: 0 / 0
30.12.2019, 03:34
    #39909702
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
alexeyvgи вот в части страниц один физический порядок полей, а в части - другой
Страниц? Филлфактор до уровня секции опустить не могут с 2005го года, а тут какую-то хрень, и сразу до страниц. Нонсенс же.
А для каких-то не понятных целей можно теоретически запилить на первый взгляд недорого на уровне таблицы логическую перестановку полей. Осталось понять, зачем.
...
Рейтинг: 0 / 0
30.12.2019, 12:59
    #39909805
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
Гавриленко Сергей Алексеевич
alexeyvgи вот в части страниц один физический порядок полей, а в части - другой

Страниц? Филлфактор до уровня секции опустить не могут с 2005го года, а тут какую-то хрень, и сразу до страниц. Нонсенс же.Вот, я про это и говорю :-(
То есть, для функциональности, подобной упомянутым msLex 22051209 , это сложно.
Гавриленко Сергей Алексеевич
А для каких-то не понятных целей можно теоретически запилить на первый взгляд недорого на уровне таблицы логическую перестановку полей. Осталось понять, зачем.
А вот для select * такое сделать не так сложно.
Но при планировании изменений, фич, МС обычно выслушивает аргументы от клиентов по типу "сколько мы теряем каждый год, из за отсутствия фичи", или "сколько нам прибыли принесёт новая фича".
Порядок полей в "select *" трудно прикрутить к прибыли бизнеса пользователя SQL Server...
...
Рейтинг: 0 / 0
30.12.2019, 13:15
    #39909820
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавления поля
Порядок столбцов важен, если где-то в коде определена битовая маска изменений и никто об этом не догадывается.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Добавления поля / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]