/ / Como inserir uma linha na tabela automaticamente? - mysql, insira

Como inserir uma linha na tabela automaticamente? - mysql, insira

Eu tenho duas tabelas (pai e filho) no meu banco de dados. Como posso inserir um novo registro na tabela pai para que um registro seja inserido automaticamente na tabela filha?

Respostas:

1 para resposta № 1

Você pode usar (depois de inserir) gatilhos para isso, veja Manual do MySQL para sintaxe.


0 para resposta № 2

Aqui está um exemplo de uso de um gatilho para inserir um novo registro filho com o ID de incremento automático pai recém-gerado.

mysql> create table ParentTable (id int auto_increment primary key);

mysql> create table ChildTable (id int auto_increment primary key,
parentId int, foreign key (parentId) references ParentTable(id));

mysql> CREATE TRIGGER MyTrigger AFTER INSERT ON ParentTable
-> FOR EACH ROW
-> INSERT INTO ChildTable (parentId) VALUES (NEW.id);

mysql> insert into ParentTable () values ();
Query OK, 1 row affected (0.02 sec)

mysql> select * from ChildTable;
+----+----------+
| id | parentId |
+----+----------+
|  1 |        1 |
+----+----------+

Este é um exemplo trivial, porque as duas tabelas não possuem nenhuma outra coluna exceto suas chaves primárias e a chave estrangeira.

Mas e se você quiser inserir outras colunas na tabela filho?

O gatilho só tem acesso ao NEW.* colunas da linha que acabou de inserir no pai. Pode também SELECT outros dados existentes de outras partes do banco de dados. Ou pode usar valores literais codificados.

Também pode haver padrões nas outras colunas na tabela filha, ou então pode ser que eles sejam NULL temporariamente, até que você possa preenchê-los com instruções UPDATE subseqüentes.

Você tem que aceitar que o gatilho pode não ser capaz de fornecer valores específicos para as colunas relevantes à medida que INSERT se conecta à tabela filha.