我尝试删除h2中以前创建为info varchar(255) unique
的列的唯一约束。删除H2中列的唯一约束
我想:
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)
似乎返回正确的输出。
谢谢,托马斯!我希望你亲自回答我的问题:)问题是你的解决方案对我来说显而易见,无论如何我会接受你的答案。坏的是我需要它来自动化我的德尔塔脚本,而不需要手动干预:(((( – Alec 2012-04-05 07:34:49
这个我得到了“Constraint not found”),它为我工作的“constraint_name”而不是“unique_index_name”,这样select就是'从formation_schema.constraints 选择不同constraint_name命令在表格名= 'PUBLIC_PARTNER' 和column_list中= UNIQUE'' 我的H2的版本是1.3 'INFO'' 一个还可另外通过添加'AND constraint_type =限制约束类型' .166 btw。 –
MartinGrotzke
2012-07-19 07:47:41
@MartinGrotzke谢谢!我已经更新了我的答案(在“information_schema”中也有一个错字)。 – 2012-07-19 10:04:18