gpt4 book ai didi

sql - 无法从表中删除 UNIQUE 索引

转载 作者:行者123 更新时间:2023-12-05 00:02:57 24 4
gpt4 key购买 nike

当我运行此查询时

ALTER TABLE "dbo"."ROOM" DROP INDEX "UNIQUE";

我收到了这条消息:

Error 1018: Incorrect syntax near 'INDEX'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required. See SQL Server Books Online for proper syntax.



唯一索引的名称正确地是 UNIQUE .我认为这是问题所在,它是一个自动生成的名称(用于创建此索引的 SQL Server 客户端)。这是创建表语句:
CREATE TABLE "ROOM" (
"ID" BIGINT NOT NULL DEFAULT NULL,
//the rest of the columns...
"ROOM" VARCHAR(100),
UNIQUE INDEX "UNIQUE" ("ROOM")
)
;

知道如何删除此索引吗?我知道我可以删除表,然后重新创建它,我想避免这种情况。

最佳答案

你需要使用这个语句:

DROP INDEX [UNIQUE] ON dbo.Room 

您需要删除索引,并定义它是在哪个表上创建的……并且由于其名称是保留的 SQL 关键字,因此您需要将其放入方括号 ( [UNIQUE] ) 中。

official MSDN documentation on DROP INDEX 更多细节

更新:如果此语句不起作用,则该索引 不叫 UNIQUE毕竟。

检查 Room 上定义了哪些索引带有此语句的表:
SELECT * 
FROM sys.indexes
WHERE object_id=OBJECT_ID('dbo.Room')

并查看 Name列 - 然后使用 合适 , 删除该索引的实际索引名称。

更新 #2:好的,你 真的具有唯一约束,该约束由该唯一索引强制执行。所以为了摆脱它,首先你需要找出那个约束被称为什么,以及它在哪个表上:
SELECT 
name,
TableName = OBJECT_NAME(parent_object_id)
FROM sys.key_constraints
WHERE type = 'UQ'

获得这两条信息后,您现在可以删除该约束:
ALTER TABLE (TableName)
DROP CONSTRAINT (ConstraintName)

然后你的唯一索引也会消失。

关于sql - 无法从表中删除 UNIQUE 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28905787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com