我在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在单元测试中使用)
答案 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约束,则删除密钥,然后添加一个非唯一密钥。