删除MySQL和H2中的唯一约束

时间:2015-03-05 15:56:53

标签: mysql h2 unique-constraint

我在CREATE语句中有以下约束:

UNIQUE (`field_name`)

这些命令用于删除MySQL中的约束工作但不包括H2:

DROP INDEX `field_name` ON `table_name`;    
ALTER TABLE `table_name` DROP INDEX `field_name`;

我需要一个可以在MySQL和H2中运行的命令(MySQL在真实环境中使用,而H2在单元测试中使用)

2 个答案:

答案 0 :(得分:1)

找到以下解决方法:删除列会删除约束,因此:

ALTER TABLE `table_name` ADD COLUMN `tmp_code` VARCHAR(50) NOT NULL DEFAULT 'TMP';

UPDATE `table_name`
SET `tmp_code` = `field_name`;

ALTER TABLE `table_name` DROP COLUMN `field_name`;

ALTER TABLE `table_name` ADD COLUMN `field_name` VARCHAR(50) NOT NULL;

UPDATE `table_name`
SET `field_name` = `tmp_code`;

ALTER TABLE `table_name` DROP COLUMN `tmp_code`;

答案 1 :(得分:0)

执行SHOW CREATE TABLE以查看UNIQUE KEY的名称。然后你可以继续DROP或ALTER。它可能会说

UNIQUE KEY `col` (`col`),

第一个col是关键名称。

如果您需要维护INDEX但摆脱UNIQUEness约束,则删除密钥,然后添加一个非唯一密钥。