Могу ли я изменить тип данных моего первичного ключа во временной таблице?
В SQL Server 2016 Express я изначально создал таблицу с первичным ключом, который использовал тип данных int. Теперь, углубившись в проект, я понял, что мне нужно, чтобы этот столбец был строковым типом данных, но когда я попробую это:
alter table ExpAwbs
drop constraint PK_ExpAwbs;
alter table ExpAwbs
alter column idExpAwbs varchar(12);
alter table ExpAwbs
add constraint PK_ExpAwbs primary key (idExpAwbs);
Я понял
Msg 4902, Level 16, State 1, Line 1
Cannot find the object "ExpAwbs" because it does not exist or you do not have permissions.
Можно ли сделать то, что я пытаюсь сделать на временной таблице, или мне нужно переделать таблицу?
2 ответа
Попробуй это:
Use YourDatabaseName
Go
alter table ExpAwbs
drop constraint PK_ExpAwbs;
alter table ExpAwbs
alter column idExpAwbs varchar(12);
alter table ExpAwbs
add constraint PK_ExpAwbs primary key (idExpAwbs);
Если это не работает, это означает, что у пользователя нет прав, поэтому вы должны сменить пользователя или Grant
разрешение для этого пользователя.
Как упомянул @wei_dba, это, скорее всего, проблема с разрешениями. Чтобы доказать это, я воссоздал вашу таблицу, добавил к ней некоторые данные и попробовал - все заработало. Если вы не можете сделать это, очевидно, что проблема лежит в области разрешений; вам может потребоваться, чтобы кто-то выполнил этот запрос для вас.
При рассмотрении вашего запроса я вижу еще одну проблему с быстрым исправлением. Вы можете заменить следующее:
alter table ExpAwbs
alter column idExpAwbs varchar(12);
с
alter table ExpAwbs
alter column idExpAwbs varchar(12) not null;
Причиной является то, что вам нужно убедиться, что PK не имеет значения NULL, что вы не включили в свой запрос.