Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, estou com um pequeno probleminha, se vocês puderem me ajudar eu agradeço MUITO:
Vou postar o código de minha tabela e o código das Procedures e Transactions para voces entenderem melhor:
Tabela 1
CREATE TABLE `anuncio` (
`cod` int(10) unsigned NOT NULL auto_increment,
`cod_usuario` int(10) unsigned NOT NULL,
`info_tipo` varchar(8) collate latin1_general_ci NOT NULL,
`info_fabricante` varchar(20) collate latin1_general_ci NOT NULL,
`info_modelo` varchar(20) collate latin1_general_ci NOT NULL,
`car_ano1` int(4) unsigned NOT NULL,
`car_ano2` int(4) unsigned NOT NULL,
`car_motor` varchar(15) collate latin1_general_ci NOT NULL,
`car_cor` varchar(10) collate latin1_general_ci NOT NULL,
`car_combustivel` varchar(15) collate latin1_general_ci NOT NULL,
`car_km` varchar(8) collate latin1_general_ci NOT NULL,
`car_porta` varchar(1) collate latin1_general_ci NOT NULL,
`car_cambio` varchar(1) collate latin1_general_ci NOT NULL,
`car_final_placa` int(1) unsigned NOT NULL,
`car_preco` float NOT NULL,
`car_versao` varchar(20) collate latin1_general_ci NOT NULL,
`car_observacao` text collate latin1_general_ci NOT NULL,
`data_inicio` date NOT NULL,
`data_expiracao` date NOT NULL,
`opc_destaque` int(1) unsigned NOT NULL,
`situacao` varchar(3) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`cod`),
KEY `cod_usuario_anuncio` (`cod_usuario`)
) ENGINE=InnoDB;
Tabela 2
CREATE TABLE `anuncio_foto` (
`cod` int(10) unsigned NOT NULL auto_increment,
`cod_anuncio` int(10) unsigned NOT NULL,
`foto_1` varchar(45) collate latin1_general_ci NOT NULL,
`foto_2` varchar(45) collate latin1_general_ci NOT NULL,
`foto_3` varchar(45) collate latin1_general_ci NOT NULL,
`foto_4` varchar(45) collate latin1_general_ci NOT NULL,
`foto_5` varchar(45) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`cod`),
KEY `cod_anuncio_anuncio_foto` (`cod_anuncio`)
) ENGINE=InnoDB;
Tabela 3
DELIMITER //
CREATE PROCEDURE inserirAnuncioDados (
v_cod_usuario INT,
v_info_tipo VARCHAR(8),
v_info_fabricante VARCHAR(20),
v_info_modelo VARCHAR(20),
v_car_ano1 INT(4),
v_car_ano2 INT(4),
v_car_motor VARCHAR(15),
v_car_cor VARCHAR(10),
v_car_combustivel VARCHAR(15),
v_car_km VARCHAR(8),
v_car_porta VARCHAR(1),
v_car_cambio VARCHAR(1),
v_car_final_placa INT(1),
v_car_preco FLOAT,
v_car_versao VARCHAR(20),
v_car_observacao TEXT,
v_data_inicio DATE,
v_data_expiracao DATE,
v_opc_destaque INT(1),
v_situacao VARCHAR(3))
BEGIN INSERT INTO
anuncio (cod_usuario,info_tipo,info_fabricante,info_modelo,car_ano1,car_ano2,car_motor,c
ar_cor,car_combustivel,car_km,car_porta,car_cambio,car_final_placa,car_preco,car
_
versao,car_observacao,data_inicio,data_expiracao,opc_destaque,situacao)
VALUES
(v_cod_usuario,v_info_tipo,v_info_fabricante,v_info_modelo,v_car_ano1,v_car_ano2
,v_car_motor,v_car_cor,v_car_combustivel,v_car_km,v_car_porta,v_car_cambio,v_car
_
final_placa,v_car_preco,v_car_versao,v_car_observacao,v_data_inicio,v_data_expir
a
cao,v_opc_destaque,v_situacao);
END ;
//
DELIMITER //
CREATE PROCEDURE inserirAnuncioOpcional (
v_cod_anuncio INT,
v_cod_opcional INT(3))
BEGIN INSERT INTO
anuncio_opcional (cod_anuncio,cod_opcional)
VALUES
(v_cod_anuncio,v_cod_opcional);
END;
//
DELIMITER //
CREATE PROCEDURE inserirAnuncioFoto (
v_cod_anuncio INT,
v_foto_1 VARCHAR(45),
v_foto_2 VARCHAR(45),
v_foto_3 VARCHAR(45),
v_foto_4 VARCHAR(45),
v_foto_5 VARCHAR(45))
BEGIN INSERT INTO
anuncio_foto (cod_anuncio,foto_1,foto_2,foto_3,foto_4,foto_5)
VALUES
(v_cod_anuncio,v_foto_1,v_foto_2,v_foto_3,v_foto_4,v_foto_5);
END;
//
Transaction - esta transação não apresenta nenhum erro, mas ela não dá o COMMIT, e eu não consegui identificar o erro
START TRANSACTION;
CALL inserirAnuncioDados(
'2',
'carro',
'chevrolet',
'celta',
'2002',
'2002',
'1.0',
'vermelho',
'gasolina',
'0',
'2',
'a',
'9',
'13500',
'sport',
'o carro e h muito novo',
'2008-01-17',
'2008-02-17',
'0',
'ati'
);
SELECT DISTINCT LAST_INSERT_ID() INTO @codAnuncio FROM anuncio;
IF ((@codAnuncio <> NULL) OR (@codAnuncio <> '')) THEN
CALL inserirAnuncioOpcional('@codAnuncio','20');
CALL inserirAnuncioOpcional('@codAnuncio','21');
CALL inserirAnuncioOpcional('@codAnuncio','22');
CALL inserirAnuncioOpcional('@codAnuncio','23');
CALL inserirAnuncioFoto('@codAnuncio','3','4','5','6','7');
ELSE
ROLLBACK;
SELECT 'Nao foi possivel pegar o cod da insercao anterior' AS erro;
END IF;
COMMIT;
Não retorna erro nenhum, o mysql retorna a seguinte informação:
Query Result no Resultset.
Versão do Servidor: 5.0.45-community-nt
Versão do cliente MySQL: 5.0.45
Carregando comentários...