![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 7.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam, jestem początkujący w MySQL'u.
Posiadam dwie tabele CREATE TABLE IF NOT EXISTS `movie` ( `idMovie` int(11) NOT NULL AUTO_INCREMENT, `idFile` int(11) NOT NULL AUTO_INCREMENT, + inne pola CREATE TABLE IF NOT EXISTS `streamdetails` ( `idFile` int(11) NOT NULL, `iStreamType` int(11) DEFAULT NULL, + inne pola Przy dodawaniu jednej pozycji wysyłane są dwa zapytania INSERT do pierwszej i drugiej tabeli. Pierwsze zapytanie tworzy w tabeli "movie" jeden rekord. Chciałbym aby drugie zapytanie utworzyło w tabeli "streamdetails" dwa rekordy obydwa miały by to samo "idFile" co w pierwszej tabeli natomiast pole "iStreamType" w pierwszym rekordzie miałoby wartość 0 a drugim wartość 1. Czy można dokonać czegoś takiego żeby pole "idFile" w drugiej tabeli automatycznie dostawało wartość z pola "idFile" z pierwszej tabeli. Czy po prostu muszę dodatkowym zapytaniem sprawdzić wartość tego pola i następnie zapisać je w drugiej tabeli. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Tabela nie może mieć dwóch kolumn automatycznie numerowanych, co zresztą byłoby bez sensu.
Najlepiej użyć TRIGGER-a AFTER INSERT, który sam doda dwa wiersze do drugiej tabeli korzystając z `NEW`.`id`. Alternatywą jest transakcja +: 1. MySQL-owa funkcja LAST_INSERT_ID() 2. PHP-owa funkcja mysql_insert_id() 3. a w ostateczności SELECT. Schemat transakcji: - wstaw dane do tabeli 1 (INSERT) - pobierz identyfikator ostatniego wstawionego wiersza (podpunkty powyżej) - wstaw wiersze do drugiej tabeli, korzystając z pobranego identyfikatora. I oczywiści trzeba kontrolować, czy wszystko przebiega prawidłowo. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:13 |