Sql 使varchar列成为主键
我做了一张桌子:Sql 使varchar列成为主键,sql,sql-server,sql-server-2008-r2,primary-key,alter,Sql,Sql Server,Sql Server 2008 R2,Primary Key,Alter,我做了一张桌子: id int, name varchar(50), addr varchar(50), location varchar(20) 现在我想把addr列变成主键列。我尝试了一个脚本: alter table aaa add constraint pk_addr primary key(addr) 但是它显示了一个错误,并且该列中的数据也是非空的和唯一的。我的问题是,我们是否可以将varchar列设置为主键,如果是,则上述alter列脚本是否正确。您必须指定aaa列不可为空:
id int,
name varchar(50),
addr varchar(50),
location varchar(20)
现在我想把addr
列变成主键列
。我尝试了一个脚本:
alter table aaa
add constraint pk_addr primary key(addr)
但是它显示了一个错误,并且该列中的数据也是
非空的
和唯一的
。我的问题是,我们是否可以将varchar
列设置为主键
,如果是,则上述alter
列脚本是否正确。您必须指定aaa
列不可为空:
create table aaa (id int, name varchar(50), addr varchar(50), location varchar(20));
alter table aaa alter column addr varchar(50) not null;
alter table aaa add constraint pk_addr primary key(addr);
可能您正试图更改一个列,该列的值为
null
,或者某些值相同,并且我们知道主键必须是唯一的。当您遇到这些问题时,请尝试通过SQL Management Studio进行更改,而不是进行保存,生成脚本并查看生成的脚本。@BkSantiago我已经提到,列中的值不是NULL,并且是唯一的