sql-server – 如何在复合主键中改变varchar的长度?
发布时间:2020-12-12 16:09:04 所属栏目:MsSql教程 来源:网络整理
导读:在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); 现在我想将’data’列的长度
在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); 现在我想将’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字节,并且更大值的插入将失败. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |