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)
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)