我有UNIQUE一个表上的多个字段的约束。我想更改此约束中的字段(删除一个字段)的图像。通常我会做这样的事情:
DROP INDEX unique_name ON table_name;
CREATE UNIQUE INDEX unique_name ON table_name (field1, field2, ...);
Run Code Online (Sandbox Code Playgroud)
但这是两个语句,在执行第一个语句后将UNIQUE不再有约束,因此任何INSERT可能都可能破坏约束,直到新的UNIQUE创建的。
还有另一种方法可以做到这一点:
ALTER TABLE table_name
DROP INDEX unique_name,
ADD CONSTRAINT unique_name UNIQUE (field1, field2, ...);
Run Code Online (Sandbox Code Playgroud)
这是一种说法。问题是:这个语句会执行原子操作吗?我所说的原子是指完全没有约束的时候就没有时间窗口UNIQUE。