当前位置: 首页 > 面试题库 >

在H2中删除列的唯一约束

苏涵润
2023-03-14
问题内容

我尝试删除h2中以前创建为的列的唯一约束info varchar(255) unique

我试过了:

sql> alter table public_partner drop constraint (select distinct unique_index_name from in
formation_schema.constraints where table_name='PUBLIC_PARTNER' and column_list='INFO');

但是没有成功(如下):

Syntax error in SQL statement "ALTER TABLE PUBLIC_PARTNER DROP CONSTRAINT ([*]SELECT DISTI
NCT UNIQUE_INDEX_NAME FROM INFORMATION_SCHEMA.CONSTRAINTS WHERE TABLE_NAME='PUBLIC_PARTNER
' AND COLUMN_LIST='INFO') "; expected "identifier"; SQL statement:
alter table public_partner drop constraint (select distinct unique_index_name from informa
tion_schema.constraints where table_name='PUBLIC_PARTNER' and column_list='INFO') [42001-1
60]

如何正确消除此约束?

顺便一提:

sql> (select unique_index_name from information_schema.constraints where table_name='PUBLI
C_PARTNER' and column_list='INFO');
UNIQUE_INDEX_NAME
CONSTRAINT_F574_INDEX_9
(1 row, 0 ms)

似乎返回正确的输出。


问题答案:

在SQL语言中,标识符名称不能是表达式。您需要运行两个语句:

select distinct constraint_name from information_schema.constraints 
where table_name='PUBLIC_PARTNER' and column_list='INFO'

然后获取标识符名称,并运行该语句

ALTER TABLE PUBLIC_PARTNER DROP CONSTRAINT <xxx>


 类似资料:
  • CREATE语句中有以下约束: 这些用于删除约束的命令在MySQL中有效,但在H2中无效: 我需要一个在MySQL和H2中都能工作的命令(MySQL在真实环境中使用,H2在单元测试中使用)

  • 问题内容: 如何使用phpMyAdmin在MySQL表的列上删除“唯一键约束”? 问题答案: 唯一约束也是索引。 首先使用来查找索引的名称。索引的名称存储在该查询结果中调用的列中。 然后,您可以使用DROP INDEX: 或ALTER TABLE语法:

  • 我有这样布局的模型: 这里的场景是我永远不希望用户删除数据。相反,删除只会隐藏记录。但是,我仍然希望所有非软删除的记录都遵循唯一的键约束。基本上,我希望有尽可能多的重复的已删除记录,但只有一个唯一的未删除记录可以存在。所以我本来想包括“已删除”字段(由django安全删除库提供),但问题是Django的唯一检查因“psycopg2”而失败。完整性错误:重复的键值违反了 ['field2', 'fi

  • 问题内容: 我正在将SEAM 2 / Hibernate与PostgreSQL 9数据库一起使用。我有下表 我想添加一个约束,以确保每个新条目都具有active_band_user和active_band_date的唯一组合。 每秒可能有许多次尝试插入,因此我需要尽可能地提高效率,是否可以在实体映射中使用SEAM /hibernate注释? 提前致谢 问题答案: 没有Hibernate注释在插入/

  • 问题内容: 给定Postgres数据库中的以下三列:第一,第二,第三;我如何创建一个约束使得排列是唯一的? 例如,如果数据库中存在,则将其作为非唯一变量排除在外。 问题答案: 您可以使用hstore创建唯一索引: 更新 实际上

  • 问题内容: 我想将唯一键放到如何? 问题答案: 只需使用以下SQL脚本即可删除MySQL中的索引: