Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

Как в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
1-1126852933
tes
2005-09-16 10:42
2005.10.09
не удаляются элементы


14-1127210398
ПЛОВ
2005-09-20 13:59
2005.10.09
Напомните...


1-1127308327
ktt
2005-09-21 17:12
2005.10.09
Импорт xml файла


3-1124781106
mmms
2005-08-23 11:11
2005.10.09
Хранение в поле image (MSSQL2000) нескольких дв.файлов


14-1126875653
infom
2005-09-16 17:00
2005.10.09
Защитить программу с исходниками от распространения...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский