mysql - 在 MySQL 和 H2 中删除唯一约束

标签 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 用于单元测试)

最佳答案

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

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`;

关于mysql - 在 MySQL 和 H2 中删除唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28882162/

相关文章:

php - while 循环期间损坏的 PDO 插入

java - 除了 'rawtohex' 之外,还有其他方法可以将数据插入 H2 中的 blob 列吗?

postgresql - 尝试强制 Liquibase 对 H2 内存数据库使用 Postgres 模式

mysql - MYSQL 的繁体中文和简体中文应该使用哪种字符集?

mysql select 用主题标签替换双引号

mysql - 使用聚合或 map reduce 在 mongodb 中获取每天的计数

java - Spring 和 H2 数据库 - 无法连接到 h2 数据库

mysql - 如何在 MySQL 中为多列指定唯一约束?

MySQL:唯一约束多列性能优化

Django - save() 更新重复键