我有一张桌子,其中有一些数据。
我在列上有一个主键,但是我想将它更改为我经常添加的另一个列。 我将列添加为可空,我将其更新为能够使其为NOT NULL。
我用过
ALTER TABLE MyTable MODIFY Termdefid INT NOT NULL
但我收到错误
'MODIFY'附近的语法不正确。
之后我想这样做(当然我放弃当前的PK之后):
ALTER TABLE [dbo].[MyTable] ADD CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED
(
[TermdefID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
GO
我无法制作新专栏NOT NULL
。这是我的问题。我怎么能这样做?
我使用SQL Server 2005,也许这是我的问题!
答案 0 :(得分:2)
在SQL Server中,主键列无法为空
另外:您的ALTER TABLE
命令对SQL Server无效 - 它应该是:
ALTER TABLE MyTable
ALTER COLUMN Termdefid INT NOT NULL
但是又一次:如果该列是主键的一部分,就不能为空。
请参阅相关的MSDN documentation on Primary Key Constraints:
一个表只能有一个PRIMARY KEY约束,一个参与PRIMARY KEY约束的列不能接受空值。由于PRIMARY KEY约束保证了唯一数据,因此它们经常在标识列上定义。