我在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用于单元测试)。
我在CREATE语句中有以下约束:
UNIQUE (`field_name`)
DROP INDEX `field_name` ON `table_name`;
ALTER TABLE `table_name` DROP INDEX `field_name`;
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`;
执行 SHOW CREATE TABLE 命令以查看唯一键的名称。然后您可以继续进行 DROP 或 ALTER 操作。它可能会显示:
UNIQUE KEY `col` (`col`),
第一个col
是键名。
如果您需要保留索引但去除唯一性约束,则删除该键,然后添加非唯一键。