如何更改SQL Server中主键的列长度?

Lea*_*ing 15 sql sql-server primary-key

我知道如何更改列的长度,但我的SQL语句失败,因为我想要更改的列是PK,所以我收到以下错误:

消息5074,级别16,状态1,行1
对象'PK_TableName'取决于列'PersonID'.

PersonID = PK.

我已经阅读了什么是更改sql server中表列的字段长度的sql,它只适用于非PK列.

我试过这个:

ALTER TABLE table_name
ALTER COLUMN column_name <new datatype>
Run Code Online (Sandbox Code Playgroud)

Ind*_*ari 20

请参阅下面的示例示例,了解如何增加主列的大小

- 创建样本表

create table abc (id varchar(10)  primary key)
Run Code Online (Sandbox Code Playgroud)

- 在关键约束表中查找主要constratint

select object_name(object_id),* from sys.key_constraints where object_name(parent_object_id) = 'abc'
Run Code Online (Sandbox Code Playgroud)

- 删除约束

ALTER TABLE abc
DROP CONSTRAINT PK__abc__3213E83F74EAC69B
Run Code Online (Sandbox Code Playgroud)

PK__abc__3213E83F74EAC69B替换为您找到的约束名称

sys.key_constraints

- 添加不为空

ALTER TABLE abc alter column id varchar(20) NOT NULL;
Run Code Online (Sandbox Code Playgroud)

- 再次添加主键

ALTER TABLE abc 
ADD CONSTRAINT MyPrimaryKey PRIMARY KEY (id)
Run Code Online (Sandbox Code Playgroud)


The*_*son 5

ALTER TABLE <Table_Name>
DROP CONSTRAINT <constraint_name>

ALTER TABLE table_name
ALTER COLUMN column_name datatype

ALTER TABLE <Table_Name>
ADD CONSTRAINT <constraint_name> PRIMARY KEY (<Column1>,<Column2>)
Run Code Online (Sandbox Code Playgroud)