2012-03-10 19 views
5

Czy można wstawić do dwóch tabel jednocześnie? Potrzebuję wstawić niektóre dane do tabeli (contactinformation), a następnie na podstawie wstawienia klucza głównego do pliku userstable i ustawić klucz podstawowy jako pole (klucz obcy). czy to możliwe?Wstawianie do dwóch tabel

Dzięki

+0

Może zaistnieć potrzeba wykonania operacji wstawiania na obu tabelach po kolei. – Lion

Odpowiedz

2

Możesz napisać procedurę dla tego.

DELIMITER // 

CREATE PROCEDURE `proc1` (contactinformation colums... usertable columns...) 
BEGIN 
    INSERT INTO contactinformation values(contactinformation colums ...); 
    INSERT INTO usertable values(LAST_INSERT_ID(), contactinformation colums ...); 
END// 

DELIMITER ; 

contactinformation colums... oznacza definicje kolumnie tabeli contactinformation.
oznacza definicje kolumn tabeli użytkownika.

Po pierwszym wstawieniu można uzyskać identyfikator wstawienia, jeśli tabela contactinformation ma dowolną kolumnę automatyczną. Następnie użyj tego klucza w drugiej instrukcji insert.

+0

jest to procedura składowana lub wyzwalacza? – Biscuit128

+0

Jego procedura przechowywana. Zobacz, czy istnieje 'CREATE PROCEDURE". Czy możesz podać nam schemat "usertable" i "contactinformation"? Wtedy lepiej zrozumiem i odpowiednio zmienię procedurę –

0

Można utworzyć wyzwalacz table1 wstawić te same wartości na table2.

2

Można wstawić do widoku aktualizowalnego lub możliwego do wstawienia, który może odwoływać się do dwóch różnych tabel przy użyciu JOIN, zapoznaj się z dokumentacją here.

Powiązane problemy