我不确定这是否重复,因为有几种方法可以删除唯一约束。我觉得我的问题不同,足以保证一个新问题。我有C#代码,它构建了mysql查询。他们看起来像这样:
CREATE table_B like table_A;
然后我改变每个新创建的表以添加类似于此的历史记录详细信息:
ALTER TABLE table_B
MODIFY COLUMN primary_column int(11) NOT NULL,
DROP KEY `PRIMARY`,
ENGINE = MyISAM,
ADD db_action_type VARCHAR(8) DEFAULT 'insert' FIRST,
ADD revision INT(6) NOT NULL AUTO_INCREMENT AFTER db_action_type,
ADD dt_datetime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER revision,
ADD PRIMARY KEY(revision);
基本上,我正在创建历史表。我遇到的麻烦是,如果表具有唯一约束,则无法添加其他行。我可以做一些查询来获取每个表的唯一约束列的列表,并单独或作为此alter table的一部分更改每个列。我只是想知道是否有一种简单的方法,不需要知道任何列名称。是否有任何类型的毯子效应丢弃唯一属性而不关心细节?