Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: insert i sprawdzenie czy rekordu juz nie ma?
Forum PHP.pl > Forum > Bazy danych
evo
1.
czy INSERT ma jakas opcje by dodal wpis tylko wtedy gdy takiego jeszcze nie ma, czy trzeba samemu poprzez SELECT wpierw sprwadzic czy danego wpisu jeszcze nie ma w bazie i jesli tak jest to dodac wpis?


Drugie pytanie to:

mam tabele A a w niej nazweA i idA, oraz tabele B a w niej idB, nazwaB i idA

Teraz znam nazweA i che wydobyc nazweB z tabeli B gdzie idA jest takie jakie idA w tabeli A gdzie nazwaA jest taka jak to co znam winksmiley.jpg

Czy musze zadac dwa zapytania czy jest mozliwe zrobienia
tego w jednym?

Z gory dziekuje i pozdrawiam
SongoQ
Ad 1. Niestety INSERT nie ma takiej wlasciwosci, moglbys robic np przez jakas funkcje ktora by to sprawdzala, ale jesli jest to MySQL to odpada.

Ad 2.
  1. SELECT *
  2. FROM tabela_a, tabela_b WHERE tabala_a.id = tabela_b.relacja_do_tabeli_a
zalew
1. dac polu, ktore ma sie nie powtarzac unique
SongoQ
Cytat
1. dac polu, ktore ma sie nie powtarzac unique


Tego tak nie wyeliminujesz bo baza zwraca wtedy blad. Jedyne wyjscie to transakcja i sprawdzic a nastepnie dodac
sobstel
mozna zrobic UPDATE i sprawdzic affected_rows. jesli rowne jest 0 to wtedy INSERTA. troszke wydajniejsze bo nie trzeba zawsze 2 zapytania (SELECT+INSERT).
SongoQ
@sopel Podaj konkretny przyklad bo nie bardzo Cie zrozumialem w czym to by mialo przyspieszyc.
sobstel
sorry, doczytalem dobrze watek i chodzi tylko o dodanie gdy nie istnieje w bazie. natomiast ja pisalem o sytuacji gdy chcemy dodac gdy nie istnieje lub zaktualizowac gdy istnieje (np. jak ma to miejsce piszac wlasnego handlera sesji).

standardowo :
krok 1 - robisz SELECT i sprawdzasz czy rekord juz jest w bazie
krok 2- wtedy jest INSERT lub UPDATE

inna opcja
krok 1 - robisz UPDATE
krok 2 - if (affected_rows ==0) INSERT
SongoQ
He he no to teraz ok. Strasznie sie zdziwilem co napisales wczesnie i dlatego zapytalem. No ale inaczej efektywnie sie nie da. W bazach z mozliwosci uzycia PL/SQL pisze sobie funkcje ktore mi poszczegolne rzeczy realizuja na bazie danych, mniej odwolan leci do serwera, szybciej, bezpieczniej.


DODANE:
Odnoscnie handlera sesji na Postgresie o Oraclu mam napisane na funkcji i steruje parametrami. (Jaki PL/SQL jest wspanialy hihihihi)
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.