更新
以下是查询结果导致的约束条件
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
更新结束
我的主机通过ASP.NET Enterprise Manager提供了与我的SQL Server DB的接口。
我的history
表中有3个列:
userId
(键,整数,不允许为空)name
(键,字符串,不允许为空)id
(非键,整数,允许为空)
我想将id列设置为唯一键。
为此,我认为需要执行以下操作:
- 确保该列中没有任何行的值为NULL
- 将该列设置为不允许为空
- 将该列添加为主键
- 将其他2个列作为键删除
然而,当我使用提供的UI时,它从未起作用。有时它只是看起来试图做些什么,但当我刷新列的视图时它从未发生变化。它偶尔会创建一个临时表,看起来它尝试执行部分操作,但它从未复制/覆盖我正在尝试更改的原始表。
当我尝试使用查询时,更改也不会显示出来。以下是我认为需要使用的查询:
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 列添加主键的操作,但好像不起作用。有人能指点一下我吗?谢谢!