Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание таблицы / 8 сообщений из 8, страница 1 из 1
14.08.2001, 12:00
    #32011741
SOVA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание таблицы
Привет всем!

Имеется сформированная таблица SourceTable. Мне необходимо на ее основе создать постоянную таблицу NewTable. Т.е. создать такую же с некоторыми заранее известными дополнительными полями. Структура исходной таблицы может быть разной.
Я делаю это так:
1. Взял системную sp_help, убрал все лишнее. Оставил только сведения касающиеся структуры таблицы. Сделал так что бы данные о структуре таблицы SourceTable вставлялись во временную таблицу.
2. Строю сторед процедуру которая формирует SQL строку "CREATE TABLE ..." на основе данных во временной таблице.
3. Запускаю строку на исполнение.

Должна получится сторед процедура которая создает типовую таблицу NewTable на основе SourceTable.

1. Мне не нравится в этом ходе то, что используется переделанная мной sp_help! Можно как-то использовать исходную sp_help?
2. А можно обойтись без временной таблицы?
...
Рейтинг: 0 / 0
14.08.2001, 12:17
    #32011746
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание таблицы
>1. Мне не нравится в этом ходе то, что используется переделанная мной sp_help! Можно как-то
>использовать исходную sp_help?

А так может лучше ?
select * from INFORMATION_SCHEMA.COLUMNS where table_name = 'mytable'
...
Рейтинг: 0 / 0
14.08.2001, 12:25
    #32011749
SOVA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание таблицы
)) посмеялись отдуши... честное слово!!! ))
оказывается как все просто! а мы копались пол дня... комсомольцы... без трудностей не можем! ))

Спасибо огромное!
...
Рейтинг: 0 / 0
14.08.2001, 14:02
    #32011760
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание таблицы
А может так еще проще? :
create table #addparttable (newfield1 int, newfield2 varchar(22))
select * into newtab from sourcetable, #addparttable where 1=2
...
Рейтинг: 0 / 0
14.08.2001, 17:00
    #32011777
SOVA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание таблицы
Уже не до смеха... а еще проще можно?
(... и полез в BOL)
...
Рейтинг: 0 / 0
15.08.2001, 06:30
    #32011796
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание таблицы
А можно вообще в одну строчку:

select *, cast(null as int) as 'field1', cast(null as numeric(15, ) as 'field2', cast(null as varchar(100)) as 'field3' into #tmp from sysobjects where 0 = 1
...
Рейтинг: 0 / 0
15.08.2001, 07:40
    #32011801
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание таблицы
Маленькое уточнение - при использовании приведенных выше примеров в новую таблицу не будут переноситься constraint-ы вроде IDENTITY и NOT NULL, а также default значение полей, и вычисляемые поля превратяться в обыкновенные.
Если все эти особенности оригинальной таблицы не нужны в новой таблице, то проще и правда уже некуда.
...
Рейтинг: 0 / 0
15.08.2001, 18:14
    #32011881
SOVA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание таблицы
Glory: все эти особенности не нужны!
Всем спасибо... данная конструкция открыла просто море возможностей!
И хде я раньше был?!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Создание таблицы / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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