ckb*_*dge 49 sql database sql-server shared-hosting
UPDATE
以下是查询结果的约束
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企业管理器为我的SQL Server数据库提供了一个接口.
我的表中有3列history:
userId (key,int,NULL不允许)name (键,字符串,不允许NULL)id (不是key,int,允许NULL)我想让id列成为唯一的关键.
要做到这一点,我相信我需要:
但是,当我使用提供的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列添加主键.它似乎不起作用.有人能指出我正确的方向吗?谢谢!
com*_*ech 73
假设您当前的主键约束称为pk_history,您可以替换以下行:
ALTER TABLE history ADD PRIMARY KEY (id)
ALTER TABLE history
DROP CONSTRAINT userId
DROP CONSTRAINT name
用这些:
ALTER TABLE history DROP CONSTRAINT pk_history
ALTER TABLE history ADD CONSTRAINT pk_history PRIMARY KEY (id)
如果您不知道PK的名称是什么,可以使用以下查询找到它:
SELECT * 
  FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
 WHERE TABLE_NAME = 'history'