gpt4 book ai didi

sql-server - 如何更改复合主键中varchar的长度?

转载 作者:行者123 更新时间:2023-12-02 06:23:37 25 4
gpt4 key购买 nike

在 MSSQL 中,我创建了一个如下所示的表:

CREATE TABLE [mytable] (fkid int NOT NULL, data varchar(255) CONSTRAINT DF_mytable_data DEFAULT '' NOT NULL);
ALTER TABLE [mytable] ADD CONSTRAINT PK_mytable_data PRIMARY KEY (fkid, data);

现在我想将“数据”列的长度从 255 增加到 4000。

如果我尝试一下:

ALTER TABLE [mytable] ALTER COLUMN data varchar(4000);

然后我收到此错误:

The object 'PK_mytable_data' is dependent on the column 'data'

如果我尝试这个:

ALTER TABLE [mytable] DROP CONSTRAINT PK_mytable_data;
ALTER TABLE [mytable] ALTER COLUMN data varchar(4000);
ALTER TABLE [mytable] ADD CONSTRAINT PK_mytable_data PRIMARY KEY (fkid, data);

然后我收到此错误:

Cannot define PRIMARY KEY constraint on nullable column in table 'mytable'

我错过了什么?两列都定义为 NOT NULL,那么为什么 MSSQL 报告在我删除该约束后它无法重新创建该约束?

谢谢!埃文

最佳答案

通过将数据类型更改为 varchar(4000),使其接受 NULL

试试这个:

ALTER TABLE [mytable] DROP CONSTRAINT PK_mytable_data;
ALTER TABLE [mytable] ALTER COLUMN data varchar(4000) NOT NULL;
ALTER TABLE [mytable] ADD CONSTRAINT PK_mytable_data PRIMARY KEY (fkid, data);

请注意,索引大小(为 PK 隐式创建)限制为 900 字节,插入更大的值将会失败。

关于sql-server - 如何更改复合主键中varchar的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2043291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com