回答

收藏

在H2中删除列的唯一约束

技术问答 技术问答 274 人阅读 | 0 人回复 | 2023-09-14

我尝试删除h2中以前创建的列的唯一约束info varchar(255) unique。2 s: K* k# \- p8 @3 w/ D
我试过了:
, D6 f& U- M5 d/ C$ _2 wsql> alter table public_partner drop constraint (select distinct unique_index_name from information_schema.constraints where table_name='PUBLIC_PARTNER' and column_list='INFO');但失败(如下):$ p! J6 o( H+ E& ]% j
Syntax error in SQL statement "ALTER TABLE PUBLIC_PARTNER DROP CONSTRAINT (SELECT DISTINCT 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 information_schema.constraints where table_name='PUBLIC_PARTNER' and column_list='INFO') [42001-160]如何正确消除这种约束?9 O4 P5 x1 F! Z1 F
顺便一提:
$ m" N& ~7 W2 P# J& {* e- Q* A/ Z7 Nsql> (select unique_index_name from information_schema.constraints where table_name='PUBLIC_PARTNER' and column_list='INFO');UNIQUE_INDEX_NAMECONSTRAINT_F574_INDEX_9(1 row,0 ms)似乎回到正确的输出。$ I! N) I8 s; p% @2 J
                                                                : O! @+ x( Q. H  ]# N* k' w
    解决方案:                                                                3 a( H8 ^( ?( @2 @/ n
                                                                在SQL在语言中,标识符的名称不能是表达式的。您需要操作两个句子:( g) M# Y' d* C0 c4 m
select distinct constraint_name from information_schema.constraints where table_name='PUBLIC_PARTNER' and column_list='INFO'然后获取标志符的名称并运行该句子
+ s! ]3 g$ p) U$ {4 M5 |ALTER TABLE PUBLIC_PARTNER DROP CONSTRAINT
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则