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
Run Code Online (Sandbox Code Playgroud)
这是查询的结果
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'history'
CONSTRAINT_NAME CONSTRAINT_TYPE IS_DEFERRABLE INITIALLY_DEFERRED
PK_history PRIMARY KEY NO NO
Run Code Online (Sandbox Code Playgroud)
结束更新
我的主机通过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
Run Code Online (Sandbox Code Playgroud)
我只是试图禁止NULL并为id列添加主键.它似乎不起作用.有人能指出我正确的方向吗?谢谢!
com*_*ech 73
假设您当前的主键约束称为pk_history,您可以替换以下行:
ALTER TABLE history ADD PRIMARY KEY (id)
ALTER TABLE history
DROP CONSTRAINT userId
DROP CONSTRAINT name
Run Code Online (Sandbox Code Playgroud)
用这些:
ALTER TABLE history DROP CONSTRAINT pk_history
ALTER TABLE history ADD CONSTRAINT pk_history PRIMARY KEY (id)
Run Code Online (Sandbox Code Playgroud)
如果您不知道PK的名称是什么,可以使用以下查询找到它:
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'history'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149971 次 |
| 最近记录: |