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.
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