[英]Can I change the data type of my primary key on a temporal table?
在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.
是否可以在临时表上执行我想做的事情,还是需要重新制作表?
尝试这个 :
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是不可为空的,而您没有在查询中添加这些内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.