假设我有一个没有唯一约束的列,我该如何添加该约束?
如果可以,我如何确保列中已有的元素符合该约束?
答案 0 :(得分:0)
试试这个:
CREATE TABLE table_copy AS SELECT * FROM table; -- creating table copy
TRUNCATE TABLE table; -- truncating table to successfully apply unique index
ALTER TABLE table ADD CONSTRAINT table_fieldname_unique_index UNIQUE (fieldname); -- adding unique index, replace **fieldname** with real field name
INSERT IGNORE INTO table VALUES (SELECT * FROM table_copy); -- copy data from table copy to original table
答案 1 :(得分:0)
使用
添加constaint ALTER TABLE <your table> ADD CONSTRAINT <constraint name> UNIQUE (<your column>)
为了确保您的表符合唯一约束,您可以执行
SELECT count(t.<your column>) FROM <your table> t GROUP BY t.<your column>
HAVING COUNT(t.<your column>) > 1
此查询将为粘贴表返回0,否则返回1
答案 2 :(得分:0)
如果您尝试添加唯一约束并且现有数据不是唯一的,那么您将收到错误并且添加约束将失败。