Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 4.383 pregleda

Najnovija ↓

Insert u vise tabela sa novim Id iz prve tabele 25.10.2006. u 15:19 · pre 243 meseca #1
Kako bi moga da se uradi insert u 3 tabele,stim da se novi Id iz prve tabele, upisuje i u druge dve (kao strani kljuc radi povezivanja). A da pri tome ne bude brljanja ako dodje do velikog broja inserta u isto vreme?
poz
Re: Insert u vise tabela sa novim Id iz prve tabele 25.10.2006. u 20:16 · pre 243 meseca #2
Bez neke komplikacije.
Uradis prvi insert, pokupis taj ID sa selectom i onda formiras sledecu SQL komandu sa tim IDom kao jednim od parametara.
Potpis
:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
Re: Insert u vise tabela sa novim Id iz prve tabele 26.10.2006. u 12:37 · pre 243 meseca #3
Citat:
misk0: Bez neke komplikacije.
Uradis prvi insert, pokupis taj ID sa selectom i onda formiras sledecu SQL komandu sa tim IDom kao jednim od parametara.

Moze nesto ovako:
INSERT INTO table1(id,col1,col2) VALUES (,var1,var2)
$zadnji_id=mysql_insert_id()
INSERT INTO table2(id,col1,col2) VALUES (,$zadnji_id,var2)
INSERT INTO table3(id,col1,col2) VALUES (,$zadnji_id,var2)?
Re: Insert u vise tabela sa novim Id iz prve tabele 01.11.2006. u 11:36 · pre 243 meseca #4
Citat:
dj13: Kako bi moga da se uradi insert u 3 tabele,stim da se novi Id iz prve tabele, upisuje i u druge dve (kao strani kljuc radi povezivanja). A da pri tome ne bude brljanja ako dodje do velikog broja inserta u isto vreme?
poz


Ako dodje do velikog broja inserta onda koristi transakcije!
To je veoma mocno sredstvo!
Znaci
START TRANSACTION;
INSERT INTO table1(id,col1,col2) VALUES (,var1,var2)
$zadnji_id=mysql_insert_id()
INSERT INTO table2(id,col1,col2) VALUES (,$zadnji_id,var2)
INSERT INTO table3(id,col1,col2) VALUES (,$zadnji_id,var2)?
COMMIT;


I ukoliko ti ne prodje cijela transakcija onda se odradi rollback i to je to!
Znaci osiguran si da ce proci upiti!
Potpis
Vedran Martinovic
www.besplatnioglasi.rs
Re: Insert u vise tabela sa novim Id iz prve tabele 07.11.2006. u 21:09 · pre 243 meseca
izmenjeno 1 put, poslednji put slobytox 07.11.2006. u 23:40
  1. slobytox07.11.2006. u 23:40zapis iz teksta poruke
#5
Transakcije se cine idealnim ali kakve probleme donose.
U uslovima kada je baza velika (>2GB) broj istovremenih konekcija recimo 20 i broj komandi 100 u sekundi u kojoj meri ce koriscenje transakcija usporiti rad mysql servera.

Dodatno kako mogu biti siguran da izmedju komandi:

INSERT INTO table1(id,col1,col2) VALUES (,var1,var2)

i

$zadnji_id=mysql_insert_id()

nece biti zavrsena insert komanda od nekog drugog usera pa umesto zeljenog ID-a da dobijem drugi ID

Interesuje me u kojoj meri transakcije usporavaju server kod velikih i opterecenih baza? Ima li neko ozbiljnije iskustvo u vezi sa tim?
Da li na opterecenje servera prilikom transakcije bitno utice velicina tabela koje su u igri i moze li neko da objasni sta se zapravo desava prilikom izvrsenja transakcije?
Potpis
-----------------
SJ
Re: Insert u vise tabela sa novim Id iz prve tabele 13.11.2006. u 10:42 · pre 243 meseca #6
Citat:
slobytox:
Dodatno kako mogu biti siguran da izmedju komandi:

INSERT INTO table1(id,col1,col2) VALUES (,var1,var2)

i

$zadnji_id=mysql_insert_id()

nece biti zavrsena insert komanda od nekog drugog usera pa umesto zeljenog ID-a da dobijem drugi ID


To i mene interesuje.
Mada sam negde procitao da sa PHP mysql_insert_id() valjda ne moze doci do te gorespomenute zamene ID, dok np. ako se uzme MySQL komanda last_insert_id da je moguca zbrka.
To sam samo procitao i ne znam da li je tacno, ako neko moze da potvrdi sa sigurnoscu bilo bi lepo :).
poz
Re: Insert u vise tabela sa novim Id iz prve tabele 15.11.2006. u 17:33 · pre 243 meseca #7
Nadam se da ce vam ovo pomoci:
"The value of mysql_insert_id() is affected only by statements issued within the current client connection. It is not affected by statements issued by other clients."
i
"Also note that the value of the SQL LAST_INSERT_ID() function always contains the most recently generated AUTO_INCREMENT value, and is not reset between statements because the value of that function is maintained in the server."
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme