Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Takie same pole w dwóch tabelach
Forum PHP.pl > Forum > Bazy danych > MySQL
Regss
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.
mortus
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.