Mysql - Trigger

Tenho a seguinte Trigger:

[code]DELIMITER ||

DROP TRIGGER IF EXISTS trigInsereRemedios ||
CREATE TRIGGER trigInsereRemedios AFTER INSERT ON remedios
FOR EACH ROW BEGIN
DECLARE aux_tipo varchar(100);
IF(NEW.tipo IS NULL)THEN
SET aux_tipo = ‘Não Especificado’;
ELSE
SET aux_tipo = NEW.tipo;
END IF;

	INSERT INTO Auditoria (antiga, nova, tipo, tabela, data) VALUES (
		'Não Possui',
		CONCAT('id',NEW.id,'nome',NEW.nome,'tipo',aux_tipo,'quantidade',NEW.quantidade,'id_fornecedor',NEW.id_fornecedor,'valor',NEW.valor),
		'INSERT',
		'Remedios',
		NOW()
	);
END;

||

DELIMITER ;[/code]Ela cria normalmente

Query OK, 0 rows affected (0.05 sec)Mas quando executo algum INSERT:

insert into Remedios (nome,tipo,quantidade,id_fornecedor,valor) values ('Diazepam','Ansiolíticos',150,2,35);Ela me retorna um erro, a meu ver parece ser que ela não me deixa usar a FK:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`clinica`.`remedios`, CONSTRAINT `remedios_ibfk_1` FOREIGN KEY (`id_fornecedor`) REFERENCES `fornecedor` (`id`))Gostaria de saber como resolver isso.
Outras infos:

[code]create table Fornecedor(
id int primary key auto_increment not null,
nome_empresa varchar(100) not null,
cnpj varchar(20) not null unique,
fone varchar(20) not null,
status int not null,
endereco varchar(200)
);

create table Remedios(
id int auto_increment not null,
nome varchar(100) not null,
tipo varchar(100),
quantidade int not null,
id_fornecedor int not null,
valor double not null,
foreign key (id_fornecedor) references Fornecedor(id),
primary key (id,id_fornecedor)
);[/code]

   1. ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`clinica`.`remedios`, CONSTRAINT `remedios_ibfk_1` FOREIGN KEY (`id_fornecedor`) REFERENCES `fornecedor` (`id`))  

existem algumas possibilidades que pensei aqui:
1- duplicidade de dados - já existe no banco de dados uma chave estrangeira com o valor inserido. Significa que vc criou a tabela para não aceitar repeticao de um valor neste campo.
2- o valor do id que está tentando inserir não eixste na tabela fornecedor

é o que estou pensando no momento.

Mostra como criou a tabela Auditoria

ta aiCREATE TABLE Auditoria( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, data DATE NOT NULL, tipo VARCHAR(100) NOT NULL, tabela VARCHAR(100) NOT NULL, antiga VARCHAR(700) NOT NULL, nova VARCHAR(700) NOT NULL );testei com a trigger do fornecedor, e n deu nenhum problem (ela n tem FK)[code]DROP TRIGGER IF EXISTS trigInsereFornecedor ||
CREATE TRIGGER trigInsereFornecedor AFTER INSERT ON Fornecedor
FOR EACH ROW BEGIN
DECLARE aux_endereco varchar(200);
DECLARE aux_status varchar(20);

	IF (NEW.endereco IS NULL) THEN
		SET aux_endereco = 'Não inserido';
	ELSE
		SET aux_endereco = NEW.endereco;
	END IF;	

	IF (NEW.status = 1) THEN
		SET aux_status = 'Ativo';
	ELSE
		SET aux_status = 'Inativo';
	END IF;

	INSERT INTO Auditoria (antiga, nova, tipo, tabela, data) VALUES (
		'Não Possui',
		concat('ID: ',NEW.id,' - Empresa: ',NEW.nome_empresa,' - CNPJ: ',NEW.cnpj,' - Fone: ',NEW.fone,' - Status: ',aux_status,' - Endereco: ',aux_endereco),
		'INSERT',
		'Fornecedor',
		NOW()
	);
END;

||

DELIMITER ;[/code]insere fornecedor:insert into Fornecedor (nome_empresa,cnpj,fone,status)values ('Nenhum','0','0',0); insert into Fornecedor (nome_empresa,cnpj,fone,status)values ('Biolab','00.000.000/0000-00','(10)0000-0000',1); insert into Fornecedor (nome_empresa,cnpj,fone,status)values ('Merck','00.000.000/0000-01','(10)5000-0001',1); insert into Fornecedor (nome_empresa,cnpj,fone,status)values ('Stryker','00.000.000/0000-02','(10)4000-0002',1); insert into Fornecedor (nome_empresa,cnpj,fone,status)values ('Alere','00.000.000/0000-03','(10)3000-0003',1); insert into Fornecedor (nome_empresa,cnpj,fone,status)values ('White Martins','00.000.000/0000-04','(10)2000-0004',1); insert into Fornecedor (nome_empresa,cnpj,fone,status)values ('Cristália','00.000.000/0000-05','(10)1000-0005',1);a auditoria ficou assim: select * from auditoria; +----+------------+--------+------------+------------+--------------------------------------------------------------------------------------------------------------------------+ | id | data | tipo | tabela | antiga | nova +----+------------+--------+------------+------------+--------------------------------------------------------------------------------------------------------------------------+ | 1 | 2011-12-01 | INSERT | Fornecedor | Não Possui | ID: 1 - Empresa: Nenhum - CNPJ: 0 - Fone: 0 - Status: Inativo - Endereco: Não inserido | 2 | 2011-12-01 | INSERT | Fornecedor | Não Possui | ID: 2 - Empresa: Biolab - CNPJ: 00.000.000/0000-00 - Fone: (10)0000-0000 - Status: Ativo - Endereco: Não inserido | 3 | 2011-12-01 | INSERT | Fornecedor | Não Possui | ID: 3 - Empresa: Merck - CNPJ: 00.000.000/0000-01 - Fone: (10)5000-0001 - Status: Ativo - Endereco: Não inserido | 4 | 2011-12-01 | INSERT | Fornecedor | Não Possui | ID: 4 - Empresa: Stryker - CNPJ: 00.000.000/0000-02 - Fone: (10)4000-0002 - Status: Ativo - Endereco: Não inserido | 5 | 2011-12-01 | INSERT | Fornecedor | Não Possui | ID: 5 - Empresa: Alere - CNPJ: 00.000.000/0000-03 - Fone: (10)3000-0003 - Status: Ativo - Endereco: Não inserido | 6 | 2011-12-01 | INSERT | Fornecedor | Não Possui | ID: 6 - Empresa: White Martins - CNPJ: 00.000.000/0000-04 - Fone: (10)2000-0004 - Status: Ativo - Endereco: Não inserido | 7 | 2011-12-01 | INSERT | Fornecedor | Não Possui | ID: 7 - Empresa: Cristália - CNPJ: 00.000.000/0000-05 - Fone: (10)1000-0005 - Status: Ativo - Endereco: Não inserido +----+------------+--------+------------+------------+--------------------------------------------------------------------------------------------------------------------------+ 7 rows in set (0.00 sec)

Será que não é por que tá faltando o Engine?
Qual é a Engine que vc tá utilizando para as tabelas?

 
create table Fornecedor(
	id int primary key auto_increment not null,
	nome_empresa varchar(100) not null,
	cnpj varchar(20) not null unique,
	fone varchar(20) not null,
	status int not null,
	endereco varchar(200)
) ENGINE=INNODB;

create table Remedios(
	id int auto_increment not null,
	nome varchar(100) not null,
	tipo varchar(100),
	quantidade int not null,
	id_fornecedor int not null,
	valor double not null,
	foreign key (id_fornecedor) references Fornecedor(id),
	primary key (id,id_fornecedor)
) ENGINE=INNODB;

???

não é, ja testei este msm modelo de auditoria com triggers de outros bancos e tals, só q em outros bancos (ambiente de teste) nao havia FK, nesse outro, q coloquei FK ele nao me deixa manipula-las

@edit
consegui, dentro da trigger eu criei algumas variaveis auxiliares na e com elas fiz alguns IFs para fazer a validação dos dados antes de executar o comando de insert na tabela auditoria, funcionou e nao esta mais dando erro,