ALTER TABLE `test` ADD UNIQUE (
`a` ,
`b`
);
我希望在创建这个唯一 key 后,将无法添加 B、A。
例如:“Michael”、“Jackson”,不允许稍后插入“Jackson”、“Michael”。
最佳答案
我假设您的应用程序处理的不是真实姓名。 (因为“Jackson Michael”在英文中是合法的名字。“John David”和“David John”也是如此。)
最简单的方法是使用 CHECK() 约束来强制两列之间按字母顺序排列。
alter table test
add constraint test_alpha_order
check (a < b);
但请注意,您也可能会遇到区分大小写的问题。也就是说,您的 dbms 可能认为 {'Jackson', 'Michael'} 和 {'jackson', 'michael'} 是两个不同的有效值。如果区分大小写是一个问题,我见过的最常见的解决方案是强制使用小写值,就像这样。
alter table test
add constraint test_alpha_order
check (a = lower(a) and
b = lower(b) and
a < b );
关于sql - 在 SQL 中创建反对称 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781834/