Supongamos que tengo una tabla mysql con dos columnas: A y B. ¿Es posible tener una clave única para que solo pueda insertar un valor una sola vez en A o B (una vez en toda la tabla)?clave única en toda la tabla mysql?
Por lo tanto, si la columna A contiene 'qwe' y B contiene 'asd', estos dos valores ya no se pueden insertar en ninguna columna.
esto no funcionará:
UNIQUE KEY `A` (`A`,`B`),
UNIQUE KEY `A_2` (`A`),
UNIQUE KEY `B` (`B`),
UNIQUE KEY `B_2` (`B`,`A`)
gracias.
edición: yo era capaz de lograr esto con el siguiente trigger:
delimiter |
create trigger unique_check before insert on mytable
for each row begin
declare alreadyexists integer;
select count(*) > 0 into alreadyexists from mytable
where A=NEW.B or B=NEW.A;
IF alreadyexists = 1 THEN begin
DECLARE dummy INT;
SELECT 'A OR B already exists' INTO dummy FROM mytable
WHERE nonexistent = 'value';
end;
END IF;
END;|
Sin embargo, no veo la 'A o B ya existe' mensaje de error, pero:
ERROR 1054 (42S22): columna desconocida 'inexistente' en 'where clause'
¡Gracias nuevamente!
Otra opción podría ser tener una tabla con las columnas 'value',' a', 'b' con' a' y 'b' como bits, y luego cuando el valor (que debe ser exclusivo) se ingrese también establece a o b en 1. Supongo que todavía da el problema de qué pasa si alguien pone en 1 para ambos 'a' y' b' pero esa es otra manera – Harold