Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 将主键更改为可为空的列而不丢失数据_Sql Server 2005_Primary Key - Fatal编程技术网

Sql server 2005 将主键更改为可为空的列而不丢失数据

Sql server 2005 将主键更改为可为空的列而不丢失数据,sql-server-2005,primary-key,Sql Server 2005,Primary Key,我有一个表格,里面有一些数据 我在一列上有一个主键,但我想将其更改为最近添加的另一列。 我将该列添加为可空,并对其进行了更新以使其不为空 我曾经 ALTER TABLE MyTable MODIFY Termdefid INT NOT NULL 但是我收到了错误 “MODIFY”附近的语法不正确 之后,我想这样做(当然,在我放弃当前PK之后): 我无法使我的新列不为空。这是我的问题。我该怎么做 我使用SQLServer2005,也许这是我的问题 在SQL Server中,主键列不能为空 另外:

我有一个表格,里面有一些数据

我在一列上有一个主键,但我想将其更改为最近添加的另一列。 我将该列添加为可空,并对其进行了更新以使其不为空

我曾经

ALTER TABLE MyTable MODIFY Termdefid INT NOT NULL
但是我收到了错误

“MODIFY”附近的语法不正确

之后,我想这样做(当然,在我放弃当前PK之后):

我无法使我的新列
不为空
。这是我的问题。我该怎么做


我使用SQLServer2005,也许这是我的问题

在SQL Server中,主键列不能为空

另外:您的
ALTER TABLE
命令对于SQL Server无效-应该是:

ALTER TABLE MyTable 
ALTER COLUMN Termdefid INT NOT NULL
但同样:如果该列是主键的一部分,它不能为空

见相关文件:

表只能有一个主键约束,参与主键约束的列不能接受空值。因为主键约束保证了数据的唯一性,所以它们经常在标识列上定义


MODIFY
替换为
ALTER COLUMN
谢谢,marc_!它起作用了,我不知道我必须改变而不是修改。我知道我的PK不应该接受null,这就是为什么我想把它设置为NOTNULL。无论如何,您不能将主键放入可为空的列,您将收到一个错误。谢谢你的回答,它成功了:)
ALTER TABLE MyTable 
ALTER COLUMN Termdefid INT NOT NULL