Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/01/2008, 22:38
hualro
 
Fecha de Ingreso: enero-2008
Mensajes: 197
Antigüedad: 17 años
Puntos: 10
Re: Clausula check no funciona

Hola Ciberyo, bueno pues si nada más lo que necesitas es que no se pueda meter el mismo valor haciéndolo como mencionas con un trigger es fácil aquí pongo el código:

create trigger hola before insert on persona
for each row
begin
if new.responsable = new.id then
set new.responsable = 'error';
end if;
end
//
delimiter ;

Antes de que lo metas a mysql unos consejos:

En tu tabla persona no tienes un campo Primary Key por lo que te recomiendo declarar el campo id not null primary key ;) esto mantiene coherencia ya que no permite duplicados en el id por lo que tus tuplas son únicas, ahora no se si en tu id persona es necesario que puedas incluir caracteres, si no los necesitas te recomiendo mejor usar campos numéricos como el Int y generación automática de claves por lo que tu campo quedaría así 'id' int not null auto increment .

Ahora sigamos... antes de que pruebes el trigger debes cambiar el delimitador ";" por "//" si no lo haces te marcará error porque queda inconclusa la declaración del trigger (llegaría hasta el final de 'error'; ) se cambia de la siguiente forma: en la línea de comandos escribes

delimiter //

después copias y pegas el código si quieres y si te fijas bien ahora vuelves a cambiar el delimitador a su forma original de punto y coma.

El trigger a grandes rasgos lo que hace es validar si el campo responsable es igual al id entonces le cambia el valor por la cadena "error" pero si ingresa el registro.

Ok pues espero te haya podido ayudar saludos y suérte !!!!! ;)