"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como inserir dados em várias tabelas MySQL simultaneamente?

Como inserir dados em várias tabelas MySQL simultaneamente?

Publicado em 2024-12-21
Navegar:318

How to Insert Data into Multiple MySQL Tables Simultaneously?

Inserção do MySQL em várias tabelas: normalização do banco de dados

A inserção de dados em várias tabelas simultaneamente no MySQL não é suportada diretamente. No entanto, existem abordagens alternativas para obter essa funcionalidade.

Usando transações

Para garantir a consistência dos dados entre tabelas, é recomendado usar transações. As transações encapsulam uma série de consultas como uma única unidade, garantindo que todas as consultas sejam bem-sucedidas ou falhem juntas.

Aqui está um exemplo usando transações:

BEGIN;
INSERT INTO users (username, password) VALUES('test', 'test');
INSERT INTO profiles (userid, bio, homepage) VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com');
COMMIT;

Recuperando o valor de incremento automático

Para inserir o ID de incremento automático da tabela de usuários na tabela de perfis, você pode usar a função LAST_INSERT_ID() . No entanto, se a instrução de inserção subsequente for inserida em uma tabela com sua própria coluna de incremento automático, o valor LAST_INSERT_ID() será atualizado para o valor dessa tabela.

Para preservar o valor LAST_INSERT_ID() original, você pode armazenar em uma variável personalizada dentro da transação.

Usando variáveis ​​MySQL:

INSERT ...
SELECT LAST_INSERT_ID() INTO @mysql_variable_here;
INSERT INTO table2 (@mysql_variable_here, ...);

Usando variáveis ​​de linguagem:

// PHP example
$mysqli->query("INSERT INTO table1 ...");
$userid = $mysqli->insert_id;
$mysqli->query("INSERT INTO table2 ($userid, ...)");

Caution

É importante considerar a consistência do banco de dados ao inserir em múltiplas tabelas. Se interrompidas, as transações garantem que todas as consultas sejam executadas totalmente ou não sejam executadas. Sem transações, inserções parciais podem resultar em inconsistências.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3