Jump to content
Sign in to follow this  
HilarYo

Como fazer um insert múltiplo - Base de dados Multi-Linguagem

Recommended Posts

HilarYo

Boa tarde suponha-mos que tenho a seguinte estrutura multi linguagem:

 MULTI_LANG_COMPLEXA_EXAMPLE.png

Como poderia fazer um insert?

Imaginemos que quero inserir o produto com o nome em português "Borracha"  e descrição "Borracha é fiche"

o que a query tem que fazer:

1º Insere um registo a tabela produtos com 2 ids vindos da tabela TRADUCAO_REF

2º Insere na tabela Tradução 2 linhas correspondentes à tabela produtos.

 

 

Edited by HilarYo

Share this post


Link to post
Share on other sites
HappyHippyHippo

so com stored procedures

não existe nada na linguagem que defina inserts para mais de que uma tabela de cada vez


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
HilarYo
1 hora atrás, HappyHippyHippo disse:

so com stored procedures

não existe nada na linguagem que defina inserts para mais de que uma tabela de cada vez

Na sua opinião o que acha desta forma de implementação de um sistema multi linguagem? Penso estar a finalizar o procedimento assim que finalizar colocarei aqui a resolução pode servir para alguém que precise. No entanto ocorreu-me uma duvida. uma vez que vou fazer alguns inserts dentro do procedure é necessário usar transações dentro dos mesmo? Cumprimentos

Share this post


Link to post
Share on other sites
HilarYo

Aqui segue o procedimento: 

-- ----------------------------
-- Procedure structure for add_produto
-- ----------------------------
DROP PROCEDURE IF EXISTS add_produto;
delimiter ;;
CREATE DEFINER=root@localhost PROCEDURE add_produto(
	## Variáveis de entrada, neste caso o que vamos inserir na tabela
	IN idioma CHAR(2),
	IN nome VARCHAR(32),
	IN descricao VARCHAR(255)
	)
BEGIN

DECLARE trad_ref_produto_nome int;
DECLARE trad_ref_produto_descricao int;

## Inser 2 registos na tabela TRADUCAO_REF e guarda o id nas variaveis: trad_ref_produto_nome e trad_ref_produto_descricao
INSERT INTO TRADUCAO_REF
SET id = DEFAULT;

SET trad_ref_produto_nome = LAST_INSERT_ID();

INSERT INTO TRADUCAO_REF
SET id = DEFAULT;

SET trad_ref_produto_descricao = LAST_INSERT_ID();

## Inserir Referências na tabela PRODUTOS

INSERT INTO PRODUTOS (nome, descricao)
VALUES(trad_ref_produto_nome, trad_ref_produto_descricao);

## Inserir NA TABELA TRADUCOES
INSERT INTO TRADUCAO VALUES(trad_ref_produto_nome, idioma, nome);
INSERT INTO TRADUCAO VALUES(trad_ref_produto_descricao, idioma, descricao);


END;
;;
delimiter ;

E aqui um select de exemplo:

SELECT PRODUTO_ID,
	(
		SELECT TRADUCAO 
		FROM TRADUCAO 
		WHERE TRADUCAO.TRADUCAO_ID = PRODUTOS.NOME
			AND TRADUCAO.CODIGO_LINGUAGEM = 'pt'
	) AS NOME,
	(
	SELECT TRADUCAO 
	FROM TRADUCAO 
	WHERE TRADUCAO.TRADUCAO_ID = PRODUTOS.DESCRICAO 
		AND TRADUCAO.CODIGO_LINGUAGEM = 'pt'
	) AS DESCRICAO
FROM PRODUTOS;

Agora vem a questão das transações eu tenho que garantir que todas aquelas operações são feitas, e se há alguma outra forma de o fazer.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.