Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.09;
Скачать: CL | DM;

Вниз

Как в T-SQL удалить IDENTITY у поля?   Найти похожие ветки 

 
Ольга   (2005-08-29 12:19) [0]

ALTER TABLE T1 ALTER COLUMN ID int
Как сюда вписать, что поле ID IDENTITY=false?


 
Oksana ©   (2005-08-29 13:49) [1]

похоже, что с помощью T-SQL никак

но после
SET IDENTITY_INSERT  Т1 ON
можно передавать свое значение в identity column:
insert into Т1(id, ...) values ( 5,... )


 
Nikolay M. ©   (2005-08-29 14:21) [2]

Никак. Только созданием рядом новой таблицы или столбца. ЕМ, к примеру, создает таблицу - можете в этом убедиться, сняв у какой-нибудь таблицы IDENTITY и сгенерив потом change script.


 
Ольга   (2005-08-29 14:22) [3]

Мне нужно убрать IDENTITY насовсем. Программно.
Неужели для этого есть только один путь:
создать временную таблицу;
переписать в нее данные;
удалить старую таблицу;
переименовать новую в старую?


 
Nikolay M. ©   (2005-08-29 14:32) [4]


> Ольга   (29.08.05 14:22) [3]

Рулить структурой БД программно - не есть гуд.
Повторюсь: можно создавать не новую таблицу, а столбец в таблице - скорее всего, это будет быстрее, чем перелив всей таблицы целиком.


 
Ольга   (2005-08-29 14:41) [5]


> [2]

Ну так у сервера нет мозгов, он действует в лоб (даже, если сменить тип поля с varchar(30) на varchar(40), он переписывает всю таблицу), а для человека с интеллектом должны же быть обходные пути (правда, моего интеллекта не хватило).


 
ANB ©   (2005-08-29 14:42) [6]


> Ольга   (29.08.05 14:41) [5]
- сервер делает абсолютно правильно. Смену типа лучше и самим так делать. Безопаснее.


 
Ольга   (2005-08-29 14:49) [7]

Сдаюсь. Буду создавать поле. Дело, конечно, разовое, но в таблицах десятки млн. записей... Ну так и не мне "лопатой махать" - серверу.


 
Nikolay M. ©   (2005-08-29 14:53) [8]


> Ольга   (29.08.05 14:41) [5]
> Ну так у сервера нет мозгов,

Во-первых, ЕМ - это не сервер.
Во-вторых, делает он, как было сказано, абсолютно правильно.
В-третьих, человек с интеллектом может попробовать снять 7-й бит (128 dec = 80 hex) в столбце syscolumns.status, но делать это крайне не рекомендуется :)


 
Anatoly Podgoretsky ©   (2005-08-29 15:01) [9]

Ольга   (29.08.05 14:49) [7]
И зачем это делать программно? Почему нельзя с помощью EM?
Если есть серьезные препятсвия, то тогда через временный столбец в 6 шагов, это системно независимый путь.


 
Ольга   (2005-08-29 15:12) [10]


> И зачем это делать программно?

База боевая, работает у N удаленных клиентов, которые максимум на что способны - это вслепую выполнить скрипт.

> в 6 шагов

довавить поле
переписать данные
удалить старое поле
переименовать новое
Какие 2 шага я пропустила (транзакцию я не считаю)?


 
Val ©   (2005-08-29 17:35) [11]

переименовать новое - 1 шаг?


 
Anatoly Podgoretsky ©   (2005-08-29 17:57) [12]

Ольга   (29.08.05 15:12) [10]
довавить поле
переписать данные
удалить старое поле
переименовать новое
Какие 2 шага я пропустила (транзакцию я не считаю)?

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


 
Anatoly Podgoretsky ©   (2005-08-29 17:58) [13]

переименовать новое уже системно-зависимо, может быть не поддержано.


 
paul_k ©   (2005-08-30 09:49) [14]

Anatoly Podgoretsky ©   (29.08.05 17:57) [12]
пункт 1
отключить всех пользователей от базы кроме себя:)


 
Ega23 ©   (2005-08-30 09:56) [15]

2 Ольга   (29.08.05 14:22) [3]

Мне нужно убрать IDENTITY насовсем. Программно.
Неужели для этого есть только один путь:
создать временную таблицу;
переписать в нее данные;
удалить старую таблицу;
переименовать новую в старую?


PowerDesigner генерит такой скрипт:
1. Создаёт временную таблицу
2. Insert into ... Select * from ...
3. Удаляет старую
4. Создаёт новую
5. Insert into ... Select * from ...
6. Удаляет временную.


 
Anatoly Podgoretsky ©   (2005-08-30 10:04) [16]

Ega23 ©   (30.08.05 09:56) [15]
Как правило так значительно быстрее, чем через поле, но теже 6 системно независимых шагов.



Страницы: 1 вся ветка

Текущий архив: 2005.10.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.037 c
10-1105421249
Руслан
2005-01-11 08:27
2005.10.09
ExcelApplication


2-1125049550
KyRo
2005-08-26 13:45
2005.10.09
Округлить или уменьшить число в дбгрид


14-1126755274
КаПиБаРа
2005-09-15 07:34
2005.10.09
Ажиотаж вокруг ФК Терек


14-1127134185
oldman
2005-09-19 16:49
2005.10.09
Блин, проблема :(


14-1126702280
YurikGL
2005-09-14 16:51
2005.10.09
ping www.instituto.com.br