Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 12.01.2019
Сообщений: 121
1

Добавление столбца

19.11.2024, 17:03. Показов 776. Ответов 20
Метки нет (Все метки)

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

У меня есть таблица POSM, в неё просят добавить еще один столбец, но не в конец, а в середину, после столбца Height. И я не знаю ,как это делается, пробовала таким кодом, но ругается на AFTER, других вариантов я не вижу. Таблица уже заполнена несколькими строками.

SQL
1
2
ALTER TABLE POSM
ADD depth FLOAT NOT NULL AFTER Height;
Пробовала через отключение триггеров и ключей-тоже не работает.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2024, 17:03
Ответы с готовыми решениями:

Добавление столбца в таблицу
Объясните, пожалуйста, конкретнее в чем ошибка CREATE DATABASE DB1 USE DB1 CREATE TABLE...

Не работает добавление столбца
Добрый день Имеем скрипт alter table TTT add NewField int null update TTT set NewField=......

Добавление нового столбца
Всем привет ! Нужно добавить новый столбец в котором будет сумма столбца Quantity Declare...

Добавление столбца во временную таблицу
Всем привет. Имеется код T-SQL в котором я копирую данные из Table1 в #TempTable: DROP TABLE...

20
781 / 296 / 82
Регистрация: 14.10.2022
Сообщений: 949
19.11.2024, 17:27 2
Цитата Сообщение от Studentosi Посмотреть сообщение
У меня есть таблица POSM, в неё просят добавить еще один столбец, но не в конец, а в середину, после столбца Height.
Никак.
Создайте таблицу нужного вам формата, перегоните в нее данные из старой, старую удалите, новую переименуйте.

Добавлено через 3 минуты
Ну, или воспользуйтесь конструктором в SSMS, он, на самом деле, сделает всё вышеперечисленное. Пересоздаст таблицу.
0
2843 / 1963 / 367
Регистрация: 14.08.2018
Сообщений: 6,344
Записей в блоге: 4
19.11.2024, 17:38 3
Лучший ответ Сообщение было отмечено D1973 как решение

Решение

Цитата Сообщение от Studentosi Посмотреть сообщение
в неё просят добавить еще один столбец, но не в конец, а в середину, после столбца Height
Эмммм.... А зачем такие трудности? Какая разница как там идут эти поля? SELECT решает все вопросы по порядку вывода...
1
824 / 317 / 41
Регистрация: 10.05.2021
Сообщений: 1,402
Записей в блоге: 10
20.11.2024, 10:38 4
Andrey-MSK, Так-то да, но * куда проще написать, чем указать полный порядок столбцов
0
2843 / 1963 / 367
Регистрация: 14.08.2018
Сообщений: 6,344
Записей в блоге: 4
20.11.2024, 10:40 5
Цитата Сообщение от Jack Famous Посмотреть сообщение
но * куда проще написать
А зачем так писать? Как потом разгребать всё что оттуда вылетит?

Кто вообще такую фигню придумал...
0
19 / 15 / 5
Регистрация: 12.06.2024
Сообщений: 83
20.11.2024, 10:42 6
Цитата Сообщение от Studentosi Посмотреть сообщение
NOT NULL
если в таблице уже есть записи, то какой NOT NULL...
или должно быть значение по умолчанию...
0
39 / 32 / 7
Регистрация: 16.10.2011
Сообщений: 96
20.11.2024, 13:30 7
* в скриптах(если это не для отладки) - такое же зло, как указывать в вызове процедуры параметры по порядку, не указывая явно их

Добавлено через 3 минуты
если это еще для загрузки через адаптер в таблицу на клиенте, то ничего страшного(кроме того, что наверняка будут избыточные данные), а вот если она где-то будет использоваться, то тут уже проблемы будут

Добавлено через 15 минут
а упорядочивание столбцов по какому-то определенному порядку в самой таблице, вижу смысл только в том случае, если вдруг есть какая-то сложная работающая система, которая по какой-то причине вдруг от этого зависит.
0
2843 / 1963 / 367
Регистрация: 14.08.2018
Сообщений: 6,344
Записей в блоге: 4
20.11.2024, 13:54 8
Цитата Сообщение от k@lYaN Посмотреть сообщение
которая по какой-то причине вдруг от этого зависит
Как она может зависеть? Любые данные из любой таблицы в любом случае достаются с помощью SELECT, другого способа нет... Или я чего-то не знаю?
0
39 / 32 / 7
Регистрация: 16.10.2011
Сообщений: 96
21.11.2024, 05:44 9
бывает, что сам запрос не в процедуре или функции, а на самом клиенте. Даже встречал, когда временные таблицы создаются из самого клиента, т.е. прям
T-SQL
1
CREATE TABLE #Table(...)
там. И если к самому клиенту не будет доступа, то печаль.
0
2843 / 1963 / 367
Регистрация: 14.08.2018
Сообщений: 6,344
Записей в блоге: 4
21.11.2024, 08:31 10
Цитата Сообщение от k@lYaN Посмотреть сообщение
бывает, что сам запрос не в процедуре или функции, а на самом клиенте.
И чем он там отличается?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public async Task<List<Draw>> GetAllByEObjectAsync(EObject mainItem)
{
    List<Draw> draws = new List<Draw>();
    string sqlText =
        "SELECT d.ID_Draw, d.ID_GenPlan, d.DrawNum, d.DrawName, d.Stage, d.StageTEP, d.Works, d.ByUnit, d.ID_DWork, d.ID_Branch " +
        "FROM dbo.tblEObject e LEFT JOIN  " +
        "dbo.tblGenPlan g ON e.ID_EObject = g.ID_EObject LEFT JOIN " +
        "dbo.tblDraw d ON g.ID_GenPlan = d.ID_GenPlan " +
        "WHERE e.ID_EObject = @id AND (d.DrawNum IS NOT NULL OR d.DrawNum <> N'')";
 
    try
    {
        using (SqlConnection sqlConnection = new SqlConnection(_connectionString))
        {
            using (SqlCommand sqlCommand = new SqlCommand(sqlText, sqlConnection))
            {
                SqlParameter paramID = new SqlParameter
                {
                    ParameterName = "@id",
                    Value = mainItem.EObjectID,
                    SqlDbType = SqlDbType.Int,
                    Direction = ParameterDirection.Input
                };
                sqlCommand.Parameters.Add(paramID);
 
                await sqlCommand.Connection.OpenAsync();
 
                using (SqlDataReader sqlDataReader = await sqlCommand.ExecuteReaderAsync())
                {
                    while (await sqlDataReader.ReadAsync())
                    {
                        draws.Add(new Draw
                        {
                            DrawID = (int)sqlDataReader["ID_Draw"],
                            GPlanID = (int)sqlDataReader["ID_GenPlan"],
                            DNumber = sqlDataReader["DrawNum"]
                                == DBNull.Value ? null : (string)sqlDataReader["DrawNum"],
                            DName = sqlDataReader["DrawName"]
                                == DBNull.Value ? null : (string)sqlDataReader["DrawName"],
                            DStage = sqlDataReader["Stage"]
                                == DBNull.Value ? null : (string)sqlDataReader["Stage"],
                            DStageTEP = (int)sqlDataReader["StageTEP"],
                            DWorks = sqlDataReader["Works"]
                                == DBNull.Value ? null : (string)sqlDataReader["Works"],
                            DByUnit = (int)sqlDataReader["ByUnit"],
                            DWorkID = sqlDataReader["ID_DWork"]
                                == DBNull.Value ? null : (int?)sqlDataReader["ID_DWork"],
                            BranchID = sqlDataReader["ID_Branch"]
                                == DBNull.Value ? null : (int?)sqlDataReader["ID_Branch"]
                        });
                    }
                }
            }
 
            return draws;
        }
    }
    catch (SqlException sqlEx)
    {
        throw new ApplicationException(string.Format("T-SQL #{0} - {1}", sqlEx.Number, sqlEx.Message), sqlEx);
    }
    catch (Exception ex)
    {
        throw new ApplicationException(ex.Message, ex);
    }
}
0
39 / 32 / 7
Регистрация: 16.10.2011
Сообщений: 96
21.11.2024, 08:42 11
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
И чем он там отличается?
Тем, что на сервере можно оперативнее внести изменения, ну и
Цитата Сообщение от k@lYaN Посмотреть сообщение
И если к самому клиенту не будет доступа, то печаль.
Добавлено через 1 минуту
Ну и это просто неудобно, когда вот так вот сам скрипт в клиент зашивается
0
2843 / 1963 / 367
Регистрация: 14.08.2018
Сообщений: 6,344
Записей в блоге: 4
21.11.2024, 08:46 12
k@lYaN, Как эти ваши замечания распространяются на порядок полей в таблице?
0
39 / 32 / 7
Регистрация: 16.10.2011
Сообщений: 96
21.11.2024, 10:05 13
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
k@lYaN, Как эти ваши замечания распространяются на порядок полей в таблице?
Если на клиенте это как-то зашито, то может повлиять. Скажем, получаются по * и рассчитывают что в 10 столбце будет определенное поле.
Это все примеры плохих решений - и *, и получение данных из полученной с сервера таблицы по номеру столбца, а не по его имени, и вызов процедуры без явного указания параметров.
А по нормальному да, порядок столбцов в таблице никаким боком не должен влиять не на процедуры/функции, не на клиент, порядок и их состав задается в скриптах.
0
2843 / 1963 / 367
Регистрация: 14.08.2018
Сообщений: 6,344
Записей в блоге: 4
21.11.2024, 10:24 14
Цитата Сообщение от k@lYaN Посмотреть сообщение
Если на клиенте это как-то зашито, то может повлиять. Скажем, получаются по * и рассчитывают что в 10 столбце будет определенное поле.
За такое в релизе по голове нужно настучать
0
39 / 32 / 7
Регистрация: 16.10.2011
Сообщений: 96
21.11.2024, 10:50 15
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
За такое в релизе по голове нужно настучать
и не только за такое...бывает такой цирк с конями встречается, что #$% и руки оторвать и голову отвентить

Добавлено через 9 минут
Временные на клиенте тот еще геммор, реальный пример:
вызывается процедура, которая выдает таблицу, в ней используются временные таблицы, но нет их заполнения, только создание, если их нет...и на всем сервере нет больше нигде упоминания о них - вроде аппендикс какой-то недовыпилленый. Запускаешь процедуру - получаешь не то что на клиенте...идешь по шагам все раскручиваешь в клиенте, и находишь, что перед вызовом процедуры работают методы по созданию и заполнению временных таблиц - это ли не извращение?
0
3400 / 1319 / 470
Регистрация: 31.05.2012
Сообщений: 4,668
21.11.2024, 11:33 16
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Какая разница как там идут эти поля?
а мне например удобней когда валюта, цена, цена в валюте, количество, стоимость, стоимость в валюте, курс, курсовая разница идут в таблице рядышком, а не хаотично разбросаны по таблице среди десятков полей. и не важно звездочка, не звездочка, где запросы на клиенте или в процедурах - не удобно как разработчику, просто на какое-то время разработка будет дольше идти. и если такая возможность предоставляется стараюсь группировать поля придерживаясь какой-то логики

зы - как-то встречал dbf-ники с именами полей N1, N2, N3 и т.д. да еще по смыслу хаотично разбросанные )
0
781 / 296 / 82
Регистрация: 14.10.2022
Сообщений: 949
21.11.2024, 11:34 17
Цитата Сообщение от k@lYaN Посмотреть сообщение
идешь по шагам все раскручиваешь в клиенте, и находишь, что перед вызовом процедуры работают методы по созданию и заполнению временных таблиц - это ли не извращение?
У нас так импорт в DWH работает.
На клиенте создается временная таблица, фиксированного формата, в нее балком складываются импортируемые записи.
А потом вызывается ХП (одна их десятка), которая имеет ввиду, что создана такая временная таблица, и в ней - всё уже лежит. И она интерпретирует "сложенные" туда данные - каким-то образом, и раскладывает куда надо.
В результате - загрузчик из, собственно, файлов, написанный на шарпе, уже лет 5 или даже больше - не менялся, а файлы, форматы, состав, да и вид (dbf-ы, хмл-ли, эксели, прочая ересь) - меняются как облака в небе.
И нужно то всего - написать вменяемый sql-запрос, чтобы запустить всё в загрузку.
... а не мучиться с этим $#$^$%&^& (выражение вымарано самоцензурой) SSIS.
:-)
0
2843 / 1963 / 367
Регистрация: 14.08.2018
Сообщений: 6,344
Записей в блоге: 4
21.11.2024, 11:43 18
Цитата Сообщение от Аватар Посмотреть сообщение
а мне например удобней когда ...
На этапе разработки таблицы не спорю - как удобно так и делаешь, а вот когда нужно что-то добавить в таблицу на работающей БД, то тут уже выбирать не приходится
Цитата Сообщение от uaggster Посмотреть сообщение
которая имеет ввиду, что создана такая временная таблица, и в ней - всё уже лежит.
У ТС физическая таблица, про временные тут уже в сторону уехали
0
3400 / 1319 / 470
Регистрация: 31.05.2012
Сообщений: 4,668
21.11.2024, 11:45 19
Цитата Сообщение от k@lYaN Посмотреть сообщение
бывает, что сам запрос не в процедуре или функции, а на самом клиенте
вот блин, я ретроград и практическм не использую процедуры для выборки, все запросы на клиенте. правда не web )
0
39 / 32 / 7
Регистрация: 16.10.2011
Сообщений: 96
21.11.2024, 11:57 20
Цитата Сообщение от Аватар Посмотреть сообщение
вот блин, я ретроград и практическм не использую процедуры для выборки, все запросы на клиенте. правда не web )
зато как удобно, когда какой-нибудь отчет получается процедурой, да и еще и таблицы стилей для него тоже с сервера берутся - и правкой этих процедур ограничивается внесение изменений в логику и отображаемые поля отчета
0
21.11.2024, 11:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2024, 11:57
Помогаю со студенческими работами здесь

Добавление столбца и его значения
Объясните, пожалуйста, как внести значение в новый столбец в уже существующей заполненной таблице

Добавление столбца в таблицу с изменяющейся структурой
Добрый день, уважаемые форумчане. Подскажите пожалуйста по следующему вопросу... Есть табличка,...

Добавление столбца в таблицу со значением по умолчанию
пишем ALTER TABLE T_001 ADD name_01 bit - всё ок а как сразу написать, чтобы name_01 bit был...

Добавление вычислимого столбца в временную таблицу MS SQL
Добрый день. Во временную таблицу необходимо вставить вычисляемый столбец с функцией, написанной...

Вывод значений столбца, которые не равны значениям другого столбца
Необходимо вывести строки табл.1 со столбцами &quot;А&quot;,&quot;Б&quot;,&quot;В&quot; с условием, что значения столбца &quot;В&quot; не...

Получение данных из столбца таблицы, имея название столбца в виде строки (nvarchar)
Здравствуйте! Существует ли какая-либо функция или процедура, которая возвращает столбец в виде...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru