Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2011, 17:50   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию MS SQL Server: назначение автосчетчика полю уже существующей таблицы

Здраствуйте! У меня такая проблема - когда уже все таблицы были созданы, я поняла, что мне нужно назначить на одно из полей уже существующей таблицы тип автосчетчик (IDENTITY). Это поле уже имеет изначально необходимый тип int (integer). Везде в справочниках рассматриваются образцы, как создать такое поле при создании таблицы, но как назначить автосчетчик на существующую таблицу - нет.
У меня были варианты и SET DEFAULT и просто изменение типа. И не один вариант не работает - среда пишет:"Ошибка синтаксиса".
Код:
ALTER TABLE dbo.Teacher
ALTER COLUMN ID_teacher SET DEFAULT IDENTITY NOT NULL
или

Код:
ALTER TABLE dbo.Teacher
ALTER COLUMN ID_teacher  INT IDENTITY
даже если в последний вариант добавляю TYPE все равно тот же эффект.
Как можно поставить счетчик(не удаляя таблицу)?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 07.10.2011, 17:58   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

добавить поле
заполнить поле
[удалить поле]
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 07.10.2011, 18:02   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Колонка в таблицу добавляется командой

ALTER TABLE dbo.Teacher ADD ID_teacher INT IDENTITY NOT NULL

насчет добавится ли IDENTITY поле не знаю, не пробовал никогда

Если не добавится, то можно создать пустую новую таблицу с таким полем
Insert-ом перегнать записи из старой в новую
Удалить старую
Переименовать новую

Хлопотно, но что делать?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.10.2011, 18:02   #4
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Я тоже сейчас подумала про ADD - сейчас проверю

Он предлагает добавлять так колонку с таким же именем и ругается, что такая колонка уже существует. Просто добавление ADD IDENTITY (как мы поступаем в случае с ADD check) опять приводит к синтаксической ошибке.

Да, я знаю, что можно просто стереть таблицу и наисать все заново красиво, просто я могу столкнутся с такой проблемой и в дальнейшем....И у меня три таких таблицы, требующих счетчки - их все тогда придется стирать?
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 07.10.2011 в 18:09.
Blondy вне форума Ответить с цитированием
Старый 07.10.2011, 18:17   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Так прпосто добавим без IDENTITY (если еще нет такого поля)
ALTER TABLE dbo.Teacher ADD ID_teacher INT NOT NULL

и попробовать изменить, можеть получится

ALTER TABLE dbo.Teacher ALTER COLUMN ID_teacher INT IDENTITY NOT NULL

глянул на первые посты, это уже было
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.10.2011, 18:20   #6
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Дорогой Аватар, я последний предложенный Вами вариант уже проверяла. Не работает... А почему - казалось бы изменяем тип поля, пусть и назначая тотже интеджер и добавляя счетчик. А он уперся - ошибка синтаксиса и все тут
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 07.10.2011, 18:28   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

ALTER TABLE dbo.Teacher ADD ID_teacher INT IDENTITY

Такое добавление у меня нормально отработало. И пронумеровало строки. Только поля не должно быть с таким именем до этой команды. evg_m кстати и предложил во втором посте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 07.10.2011 в 18:33.
Аватар вне форума Ответить с цитированием
Старый 07.10.2011, 18:33   #8
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Это понятно, что не должно - ADD добавляет новую колонку.....
То есть тогда самый примитивный вариант - создать новое поле как надо, старое удалить. А как тогда поменять порядок полей в таблице - ведь добавление произойдет в "хвост", а мне в "голову" надо.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 07.10.2011, 18:35   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Пересозданием таблицы (пост 3)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.10.2011, 18:40   #10
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,386
По умолчанию

Пересоздать таблицу никогда не поздно.
Давайте подождем Сергея (Serge_Bliznykov) или Виталика (Stilet), или может еще кто придет и предложит какой-нибудь научный метод решения проблемы. Или хотя бы объяснит - ну почему при создании таблицы int IDENTITY срабатывает, а при изменении типа на тот же int на предидущую фразу среда ругается.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать отчет на основе существующей таблицы RGZZ Microsoft Office Excel 2 28.07.2011 19:07
Разработчик|макрос. Добавление элементов к уже существующей таблице. DarkGuard Microsoft Office Excel 0 24.03.2011 19:51
Доступ к БД (SQL server) в ОС Windows server 2003 Mann SQL, базы данных 2 07.12.2008 19:15
меню в делфи с добавлением новой функции к уже существующей БД Ane4ka БД в Delphi 22 27.05.2008 15:40
Открытие(подключение) уже существующей базы данных MS Access через ADO Moel БД в Delphi 7 24.10.2007 16:57