Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
нуб987
Guest |
подскажите, как вставить столбец в таблицу? например есть такая таблица: CREATE TABLE [Table1] ( [id] [int] IDENTITY (1, 1) NOT NULL , [Name] [varchar] (50) NOT NULL ) нужно вставить столбец между id и Name. Вот как? |
3 июл 12, 12:23 [12808988] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37200 |
|
||
3 июл 12, 12:26 [12809009] Ответить | Цитировать Сообщить модератору |
нуб987
Guest |
но в редакторе таблиц же можно поле вставить. И если там уже есть миллион записей, они никуда не деваются. И эта вставка почти не занимает времени (если вставляемое поле nullable и т.п.) ПС. Нужно для "аккуратности". Чтобы близкие по назначению поля были рядом |
3 июл 12, 12:33 [12809060] Ответить | Цитировать Сообщить модератору |
Gwa
Guest |
Что значит как? Заходите в БД через Management Studio и добавляете столбец, если, конечно, у Вас есть сответствующие права.. Если нет, то обращаетесь к администратору БД. |
3 июл 12, 12:35 [12809069] Ответить | Цитировать Сообщить модератору |
Gwa
Guest |
нуб987, если Вас интересует порядок полей, то они перетаскиваются мышью.. |
3 июл 12, 12:40 [12809090] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
А нельзя так аккуратьненько в запросе перечислить "близкие по назначению поля" рядом ? |
||
3 июл 12, 12:42 [12809100] Ответить | Цитировать Сообщить модератору |
нуб987
Guest |
Gwa, интересует, как вставить поле скриптом |
3 июл 12, 12:42 [12809101] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
В студии жмете кнопку Script и ... удивляетесь результату |
||
3 июл 12, 12:43 [12809108] Ответить | Цитировать Сообщить модератору |
Alexandr Kr. Member Откуда: Украина, Харьков Сообщений: 165 |
А вы сделайте такую "аккуратность" на табличке в 100 млн, например, записей. А еще лучше сделайте правску и сгенерируйте скрипт и посмотрите ЧТО там на самом деле происходит. Может и отпадет желание такой фигней заниматься. |
||
3 июл 12, 12:44 [12809111] Ответить | Цитировать Сообщить модератору |
нуб987
Guest |
Glory, можно в принципе вообще ничего не делать ;) просто интересно, как сделать это скриптом? Почему в редакторе таблиц это можно без проблем, а скриптом как? |
3 июл 12, 12:44 [12809115] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47063 |
А если в произвольное место, то сказки-то не рассказывайте. Тем более, легко получить скрипт, которым при этом пользуется студия. Это будет пересоздание таблицы с перезаливкой данных, как уже говорили. id колонки иначе не изменить |
||
3 июл 12, 12:47 [12809122] Ответить | Цитировать Сообщить модератору |
нуб987
Guest |
[quot Alexandr Kr.]
у меня SQL2000 там все так страшно с этой вставкой? а можно пример такого скрипта, если не затруднит? |
||
3 июл 12, 12:48 [12809128] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Вам трудно в дизайнере нажать кнопку получения скрипта ? |
||
3 июл 12, 12:54 [12809158] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47063 |
|
||||
3 июл 12, 12:59 [12809202] Ответить | Цитировать Сообщить модератору |
нуб987
Guest |
если бы я знал, где она в 2000й версии, то с радостью бы нажал. Посмотрел через Profiler - да, запросов на вставку поля генерируется не мало. Еще не совсем разобрался, что каждый из них делает, но там присутствует DROP TABLE dbo.Table1 |
||
3 июл 12, 13:01 [12809216] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
На ряд кнопок в Дизайнере что мешает посмотреть ? Можно даже мышку навести для получения подсказки |
||
3 июл 12, 13:03 [12809230] Ответить | Цитировать Сообщить модератору |
Александр52 Member Откуда: Кокосовые острова ส็็็็็ Сообщений: 5136 |
Чего вы издеваетесь над человеком?ALTER TABLE [Table] ADD [Column] Column_type not null [default 0] GO |
3 июл 12, 13:16 [12809320] Ответить | Цитировать Сообщить модератору |
Sergey Sizov Member Откуда: Сообщений: 1566 |
|
||
3 июл 12, 13:17 [12809330] Ответить | Цитировать Сообщить модератору |
Александр52 Member Откуда: Кокосовые острова ส็็็็็ Сообщений: 5136 |
тогда применяете мой скрипт. Затем в дизайнере(вкладка "Проект") просто перетаскиваете между нужных колонок и сохраняете. |
||
3 июл 12, 13:20 [12809347] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47063 |
|
||
3 июл 12, 13:21 [12809349] Ответить | Цитировать Сообщить модератору |
Александр52 Member Откуда: Кокосовые острова ส็็็็็ Сообщений: 5136 |
iap, : ) Это лишь пример, конечно их нужно опустить |
3 июл 12, 13:24 [12809383] Ответить | Цитировать Сообщить модератору |
нуб987
Guest |
да, пардон. Кнопка была задисаблена сначала. А после вставки поля я чего-то протупил. Вот скрипт: BEGIN TRANSACTION SET QUOTED_IDENTIFIER ON SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF SET CONCAT_NULL_YIELDS_NULL ON SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON COMMIT BEGIN TRANSACTION CREATE TABLE dbo.Tmp_Table1 ( id int NOT NULL IDENTITY (1, 1), qwe char(10) NULL, qqq int NULL, Name varchar(50) NOT NULL ) ON [PRIMARY] GO SET IDENTITY_INSERT dbo.Tmp_Table1 ON GO IF EXISTS(SELECT * FROM dbo.Table1) EXEC('INSERT INTO dbo.Tmp_Table1 (id, qqq, Name) SELECT id, qqq, Name FROM dbo.Table1 (HOLDLOCK TABLOCKX)') GO SET IDENTITY_INSERT dbo.Tmp_Table1 OFF GO DROP TABLE dbo.Table1 GO EXECUTE sp_rename N'dbo.Tmp_Table1', N'Table1', 'OBJECT' GO COMMIT гораздо понятней, чем в профайлере :) Можно немного переделать и использовать на рабочих таблицах. Спасибо всем :) |
||||
3 июл 12, 13:26 [12809395] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37200 |
Вопрос "нафига" так и остался не раскрыт. |
3 июл 12, 13:28 [12809410] Ответить | Цитировать Сообщить модератору |
Alexandr Kr. Member Откуда: Украина, Харьков Сообщений: 165 |
Ёпта. И что по вашему произодйет после сохранения? Магическая псевдооперация "а перетащи эту колонку с этого места на это"? |
||||
3 июл 12, 13:28 [12809414] Ответить | Цитировать Сообщить модератору |
нуб987
Guest |
для таких же нубов типа меня поясню: сначала создается "временная" таблица с нужным набором полей (допустим была таблица <id, Name>, а нам нужно <id, qqq, Name>). Потом в эту таблицу вставляются записи из исходной таблицы (в новом поле будут NULL'ы). Затем исходная таблица удаляется, а "временная" переименовывается в <имя исходной таблицы> |
3 июл 12, 13:30 [12809439] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |