如何从表列中删除唯一约束?
我有一个表“users”,其“login”列定义为:
[login] VARCHAR(50) UNIQUE NOT NULL
现在我想使用 SQL 脚本删除此唯一约束/索引。我在本地数据库中找到了它的名称 UQ_users_7D78A4E7,但我认为它在另一个数据库上有不同的名称。
放弃这个独特约束的最佳方法是什么?或者至少任何...
谢谢。
I have a table 'users' with 'login' column defined as:
[login] VARCHAR(50) UNIQUE NOT NULL
Now I want to remove this unique constraint/index using SQL script. I found its name UQ_users_7D78A4E7 in my local database but I suppose it has a different name on another database.
What is the best way to drop this unique constraint? Or at least any...
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(17)
如果没有提供早期的constraint_name,它将有一些默认的constraint_name,在pgAdmin 4(pSql)中,尝试违反约束,您可以在收到的错误中看到constraint_name被违反,很可能与其他平台或那里的情况相同网络上有一些文章,其中constraint_name是从存储它们的某些表中提取的,但不确定这一点。
PS:也可以参考评论
if earlier constraints_name is not provided, it will have some default constraint_name, in pgAdmin 4 (pSql), try violating the constraint and you can see the constraint_name being violated in the error received, most probably same must be the case with other platforms or there are some articles available over web where constraint_name is extracted from certain tables where they are stored, not sure about this though.
P.S : Can take reference from comments also
SKINDER,您的代码不使用列名称。正确的脚本是:
SKINDER, your code does not use column name. Correct script is:
这大部分有效。
This works mostly.
要删除 UNIQUE 约束,您不需要约束的名称,只需要
约束中包含的列的列表。
语法是:
To drop a UNIQUE constraint, you don’t need the name of the constraint, just the
list of columns that are included in the constraint.
The syntax would be:
您可以使用以下脚本:
You can use following script :
使用以下 SQL 命令删除唯一约束:
Use this SQL command to drop a unique constraint:
这个声明对我有用
This statement works for me
对于 MSSQL 使用以下代码
for MSSQL use following codde
我已经停止了像下面这样的脚本(因为我在这个表中只有一个非聚集唯一索引):
如果这个解决方案可以接受,有人评论吗?有什么优点和缺点吗?
谢谢。
I have stopped on the script like below (as I have only one non-clustered unique index in this table):
Has anyone comments if this solution is acceptable? Any pros and cons?
Thanks.
我想参考之前的问题,因为我遇到了同样的问题并通过此解决了 解决方案。
首先,约束总是在其名称中使用
Hash
值构建。所以问题是这个HASH
在不同的机器或数据库中是不同的。例如DF__Companies__IsGlo__6AB17FE4
这里6AB17FE4
是哈希值(8 位)。所以我指的是一个对所有人都富有成效的脚本,它会放弃你的默认约束。但是,如果您想再次创建它,您可以简单地尝试这个
最后,只需运行
DROP
命令即可删除该列。I would like to refer a previous question, Because I have faced same problem and solved by this solution.
First of all a constraint is always built with a
Hash
value in it's name. So problem is thisHASH
is varies in different Machine or Database. For exampleDF__Companies__IsGlo__6AB17FE4
here6AB17FE4
is the hash value(8 bit). So I am referring a single script which will be fruitful to allIt will drop your default constraint. However if you want to create it again you can simply try this
Finally, just simply run a
DROP
command to drop the column.我也有同样的问题。我正在使用 DB2。我所做的是有点不太专业的解决方案,但它适用于每个 DBMS:
ALTER 命令的语法在其他 DBMS 中可能有所不同
I had the same problem. I'm using DB2. What I have done is a bit not too professional solution, but it works in every DBMS:
The syntax of the ALTER commands may be different in other DBMS
在任何数据库上查找所有系统生成的唯一约束名称以及与其相关的其他信息。
您可以使用以下查询并根据您的需要对其进行增强:
最终查询通过数据库删除所有唯一约束。您可以添加 where 子句将其限制为一张表:
To find all system generated unique constraint names and other information related to it on any database.
You may use below query and enhance it as per your need:
Final query to drop all unique constraint through database. You may add where clause to restrict it to one table:
对于 Sql server 2014,您可以使用以下查询删除唯一键
首先使用以下命令查找唯一键名称
For Sql server 2014 you can remove unique key using below query
First find unique key name using
展开至数据库名称>>展开至表格 >>展开至键 >>复制键的名称,然后执行以下命令:
这里 UQ__test__3213E83EB607700F 是在测试表上的特定列上创建的唯一键的名称。
Expand to database name >> expand to table >> expand to keys >> copy the name of key then execute the below command:
Here UQ__test__3213E83EB607700F is the name of unique key which was created on a particular column on test table.
FOR SQL 删除约束
ALTER TABLE [dbo].[tablename] DROP CONSTRAINT [sql 创建的唯一键]
或者去
:
转到键 - 右键单击唯一键,然后在新的 sql 编辑器窗口中单击删除约束。
该程序会为您编写代码。
希望这有帮助。
阿尼什。
FOR SQL to drop a constraint
ALTER TABLE [dbo].[tablename] DROP CONSTRAINT [unique key created by sql]
GO
alternatively:
go to the keys -- right click on unique key and click on drop constraint in new sql editor window.
The program writes the code for you.
Hope this helps.
Avanish.
约束名称
uq_testConstrain
可以在database->table->keys文件夹下找到constraint name
uq_testConstrain
can be found under database->table->keys folder如果你知道约束的名称,那么你可以直接使用命令
alter table users drop constrain_name;
如果你不知道约束的名称,你可以使用这个命令获取约束
<强>选择约束名称,约束类型
来自用户约束
其中 table_name = '您的表名称';
If you know the name of your constraint then you can directly use the command like
alter table users drop constraint constraint_name;
If you don't know the constraint name, you can get the constraint by using this command
select constraint_name,constraint_type
from user_constraints
where table_name = 'YOUR TABLE NAME';