我有两列的表格。 ID1和ID2。 我想把2列作为主键。
当插入ID1=22 , ID2=55
和ID1=55 , ID2=22
时,请不要插入并显示错误!
注*:此表是关系船。相同的兄弟和姐妹。真的有3个colmuns:ID1,ID2,TYP。
现在我如何将所有列设置为主列?当ID1和ID2如上所述并且也使TYP成为主?感谢@>
答案 0 :(得分:1)
MySQL没有一种简单的方法可以识别(id1,id2)和(id2,id1)应该是一样的。
因此,您需要创建一个触发器来处理这个问题。如果(id1, id2)
已经是主键或唯一键,那么就像这样:
delimiter $$
create trigger tr_table_insert before insert on t
for each row
begin
if (exists (select 1
from t
where t.id2 = new.id1 and t.id1 = new.id2
)
) then
set msg = concat('Combination ', new.id1, ' and ', new.id2, ' already exists);
signal sqlstate '45000' set message_text = msg;
end if;
end;
delimiter $$;
答案 1 :(得分:0)