UPDATE在SQL Server更改主键列
这里是约束作为查询
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME COLUMN_NAME ORDINAL_POSITION
PK_history userKey 1
PK_history name 2
这里的结果是查询
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME CONSTRAINT_TYPE IS_DEFERRABLE INITIALLY_DEFERRED
PK_history PRIMARY KEY NO NO
END的结果UPDATE
我的主机通过ASP.NET企业管理器为我的SQL Server数据库提供了一个接口。
我有我history
表3列:
userId
(键,INT,NULL不允许)name
(键,字符串,NULL不允许)id
(不是关键, int,NULL允许)
我想让id列成为唯一的关键。
为了做到这一点,我相信我需要:
- 确保没有在该列没有空值的任何行
- 把字段设置为不允许NULL
- 添加列作为主键
- 删除其他2列,键
然而,当我使用所提供的用户界面,它永远不会奏效。有时它会看起来像试图做某些事情,但当我刷新列的视图时,它不会改变。它偶尔会创建一个临时表,它看起来像试图执行某些操作,但从不会被复制/覆盖正在尝试更改的原始表。
当我尝试使用查询时,更改也不会显示出来。这里是我认为我需要的查询:
SELECT * from history WHERE id is NULL <---- This shows 0 results
ALTER TABLE history
ALTER COLUMN id int NOT NULL
ALTER TABLE history ADD PRIMARY KEY (id)
ALTER TABLE history
DROP CONSTRAINT userId
DROP CONSTRAINT name
GO
我只尝试了禁止NULL并为id列添加主键。它似乎没有工作。有人能指引我朝着正确的方向吗?谢谢!
您是否收到错误信息? – 2012-01-13 00:27:18
你应该先删除约束条件 – 2012-01-13 00:30:48
nope,我没有收到任何与查询有关的错误消息。使用用户界面时,我得到的错误是将ID列设置为一个键,当它允许空值时,但在尝试禁用空值时没有错误。 – ckbhodge 2012-01-13 00:37:13