|
|
|
Простой вопрос по SQL2000
|
|||
|---|---|---|---|
|
#18+
Какими различными способами можно удалить с колонки в таблице свойство IDENTITY ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 14:12:02 |
|
||
|
Простой вопрос по SQL2000
|
|||
|---|---|---|---|
|
#18+
Либо вопрос чересчур сложен, либо все ушли в курилку :) На всякий случай упрощу вопрос: Какова может быть рекомендуемая наиболее корректная последовательность операций над таблицей без использования ЕМ, позволяющая макимально безопасно и дальновидно удалить свойство IDENTITY с одной из колонок в этой таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 15:48:23 |
|
||
|
Простой вопрос по SQL2000
|
|||
|---|---|---|---|
|
#18+
А ты посмотри, какой скрипт ЕМ генерит при попытке снять идентити. Полное пересоздание таблицы. Если бы было можно проще, я думаю ЕМ не стал бы этого делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 16:01:19 |
|
||
|
Простой вопрос по SQL2000
|
|||
|---|---|---|---|
|
#18+
Если делать через EM, то в профайлере видно, что создается другая таблица с измененной структурой, туда заливаются все данные из старой таблицы (естественно, с эксклюзивным локом), старая таблица убивается, а полученная переименовывается в старую. Это если не считать миллион предварительных проверок на существование ключей, триггера и пр., переброску всех этих элементов на новую таблицу. Не думаю, что для общего случая такой задачи можно придумать лучший механизм. Как классно: дальновидно удалить свойство IDENTITY гы :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 16:24:37 |
|
||
|
Простой вопрос по SQL2000
|
|||
|---|---|---|---|
|
#18+
Можно чуть-чуть упростить - добавляем новый стобец - копируем в него содержимое identity - удаляем столбец identity - переименовываем новый столбец ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 16:41:24 |
|
||
|
Простой вопрос по SQL2000
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Да, я видел, что ЕМ пересоздает таблицу Это не очень хорошо. А плохо то, что изменяется object_id этой таблицы. Ну, нельзя без пересоздания, так нельзя - будем думать. 2GreenSunrise Да, с дальновидностью :) тут какламбурчик получился. Но, я то, втайне надеялся на какую-нибудь недокументированную возможность SQL2000 и грозящие последствия ее использования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 16:44:26 |
|
||
|
Простой вопрос по SQL2000
|
|||
|---|---|---|---|
|
#18+
Glory, ваш вариант мне пришел в голову еще до запуска профайлера, но не понравился именно в общем случае - когда навешаны ключи, триггера, констрэйнты... Тогда вся эта простенькая процедура усложняется. Нужно анализировать, какие из этих объектов относятся к нашему столбцу и т.д. Проще вытащить все связанное с этой таблицей и грохнуть все. Ну а далее по тексту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 16:57:24 |
|
||
|
Простой вопрос по SQL2000
|
|||
|---|---|---|---|
|
#18+
2Glory Спасибо. Это выход. Все гениальное просто. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 16:59:57 |
|
||
|
Простой вопрос по SQL2000
|
|||
|---|---|---|---|
|
#18+
2GreenSunrise Ну так я же и сказал "чуть-чуть" :-) . Просто копирование всей таблицы по методу EM это дополнительное место на диске (плюс к месту, занимаемому транзакцией). А в остальном все как у EM - анализ все зависимых от удаляемого столбца объектов, их удаление и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2002, 17:32:40 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1820386]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 413ms |

| 0 / 0 |
