Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Povezivanje dve tabele pomocu foreign keys...Pomoc

[es] :: MySQL :: Povezivanje dve tabele pomocu foreign keys...Pomoc

[ Pregleda: 1100 | Odgovora: 11 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

djovan01

Član broj: 75700
Poruke: 184
208.65.70.*



Profil

icon Povezivanje dve tabele pomocu foreign keys...Pomoc26.12.2006. u 19:28

kada kreirate tabelu1 i u njoj definisete Primary key i Foreign Key koji references primary key u tabeli2 znaci da ce foreign key vrednost biti prenesena iz njegove tabele2 u tabelu1? Jesam li u pravu? Kreirala sam bazu sa tabelama i bila ubedjena da sam ih povezala preko Foreign Key-a. Ovako sam ja to uradila. U cemu je moja greska?


CREATE TABLE customer
(c_id INT(6),
c_name VARCHAR(10),
contact_name VARCHAR(20),
phone INT(10),
email VARCHAR(40),
j_location VARCHAR(40),
start_date VARCHAR(10),
e_id INT(10),
f_id INT(10),
p_id INT(10),
r_id INT(10),
CONSTRAINT customer_c_id_pk PRIMARY KEY(c_id),
CONSTRAINT customer_e_id_fk FOREIGN KEY(e_id) REFERENCES facility(e_id));

CREATE TABLE facility
(c_id INT(6),
hours VARCHAR(10),
ceiling_ht VARCHAR(10),
floor VARCHAR(10),
loading_dock VARCHAR(4),
ground_door VARCHAR(4),
crane VARCHAR(4),
CONSTRAINT facility_c_id_pk PRIMARY KEY(c_id));




26.12.2006. u 19:28 

mb_sa

Član broj: 50529
Poruke: 157
*.PPPoE-2558.sa.bih.net.ba.



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc26.12.2006. u 21:30
Code:
CONSTRAINT customer_e_id_fk FOREIGN KEY(e_id) REFERENCES facility(c_id));


Mislim da bi ovako trebalo!
26.12.2006. u 21:30 

357_97

Član broj: 53056
Poruke: 46
*.eunet.yu.



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc26.12.2006. u 21:53
Posto me je neko vec preduhitrio skrenucu paznju samo na to da FOREIGN KEY podrzava samo InnoDB engine. Vise o svemu ovde.
26.12.2006. u 21:53 

mb_sa

Član broj: 50529
Poruke: 157
*.PPPoE-787.sa.bih.net.ba.



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc26.12.2006. u 22:07
Citat:
357_97: Posto me je neko vec preduhitrio skrenucu paznju samo na to da FOREIGN KEY podrzava samo InnoDB engine. Vise o svemu ovde.


Da, da! Inace, MyISAM je defaultni DB engine u mySQLu, sa obzirom da nije naveden prilikom kreiranej tabele!
26.12.2006. u 22:07 

djovan01

Član broj: 75700
Poruke: 184
208.65.70.*



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc27.12.2006. u 13:13
prvi put cujem za InnoDB posto sam pocitala nesto o tome da li mozete mi reci da ukoliko znaci specifikujem ENGINE=InnoDB; da ce moj foreign key raditi tj da ce moje tabele biti povezane kako treba ?
27.12.2006. u 13:13 

mb_sa

Član broj: 50529
Poruke: 157
*.PPPoE-367.sa.bih.net.ba.



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc27.12.2006. u 15:49
Citat:
djovan01: prvi put cujem za InnoDB posto sam pocitala nesto o tome da li mozete mi reci da ukoliko znaci specifikujem ENGINE=InnoDB; da ce moj foreign key raditi tj da ce moje tabele biti povezane kako treba ?


Da! uostalom probaj :)
27.12.2006. u 15:49 

djovan01

Član broj: 75700
Poruke: 184
208.65.70.*



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc27.12.2006. u 16:48
ne to nije pomoglo da tabele budu povezane. sta sam uradila je sledece. Svakoj tabeli sam uradila izmenu ALTER TABLE table_name ENGINE=INNODB, medjutim i dalje foreign keys nemaju nikakvog efekta. Jedina izmena je sto u okviru svake tabele na mestu Type gde je pisalo MyISAM sad pise InnoDB. Sta sada da radim?
27.12.2006. u 16:48 

mb_sa

Član broj: 50529
Poruke: 157
*.PPPoE-367.sa.bih.net.ba.



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc27.12.2006. u 20:32
Citat:
djovan01: ne to nije pomoglo da tabele budu povezane. sta sam uradila je sledece. Svakoj tabeli sam uradila izmenu ALTER TABLE table_name ENGINE=INNODB, medjutim i dalje foreign keys nemaju nikakvog efekta. Jedina izmena je sto u okviru svake tabele na mestu Type gde je pisalo MyISAM sad pise InnoDB. Sta sada da radim?


Trebalo bi da je pomoglo, ako si sve ispravno uradila?! Sta za tebe znaci da FK nemaju nikakvog efekta?

Hajdem, da probamo ovako ;)

Code:
CREATE TABLE facility
(f_id INT(6),
hours VARCHAR(10),
ceiling_ht VARCHAR(10),
floor VARCHAR(10),
loading_dock VARCHAR(4),
ground_door VARCHAR(4),
crane VARCHAR(4),
CONSTRAINT facility_f_id_pk PRIMARY KEY(f_id)) ENGINE=InnoDB;

CREATE TABLE customer
(c_id INT(6),
c_name VARCHAR(10),
contact_name VARCHAR(20),
phone INT(10),
email VARCHAR(40),
j_location VARCHAR(40),
start_date VARCHAR(10),
e_id INT(10),
f_id INT(10),
p_id INT(10),
r_id INT(10),
CONSTRAINT customer_c_id_pk PRIMARY KEY(c_id),
CONSTRAINT customer_f_id_fk FOREIGN KEY(f_id) REFERENCES facility(f_id)) ENGINE=InnoDB;


Kreiraj ove dvije tabele (u tabeli facility nemoj unostii nikakve recorde), a zatim izvrsi ovaj INSERT:

Code:

INSERT INTO customer (c_id,f_id) VALUES (1,1);


pa nam javi da li se je ovaj INSERT izvrsio i koju poruku mysql javlja!
27.12.2006. u 20:32 

djovan01

Član broj: 75700
Poruke: 184
208.65.70.*



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc27.12.2006. u 20:57
Posle ubacivanja dobijem sledecu gresku:


Error

SQL query:

INSERT INTO customer( c_id, f_id )
VALUES ( 1, 1 )

MySQL said: Documentation
#1216 - Cannot add or update a child row: a foreign key constraint fails
27.12.2006. u 20:57 

mb_sa

Član broj: 50529
Poruke: 157
*.PPPoE-367.sa.bih.net.ba.



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc27.12.2006. u 21:08
Citat:
djovan01: Posle ubacivanja dobijem sledecu gresku:


Error

SQL query:

INSERT INTO customer( c_id, f_id )
VALUES ( 1, 1 )

MySQL said: Documentation
#1216 - Cannot add or update a child row: a foreign key constraint fails


Da, tu gresku i trebas dobiti! FK constraint je odradio svoj posao. Procitaj nesto teorije o foreign key constraint-ima!

pozdravi
27.12.2006. u 21:08 

djovan01

Član broj: 75700
Poruke: 184
208.65.70.*



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc28.12.2006. u 13:01
Jos jedno pitanje. Ja mislim da razumem koncept kod FK ono sto sam do sada procitala kaze da je FK polje koje povezuje dve tabele i FK u tabeli2 prestavlja PK u tabeli1 e sada oko cega sam se ja pogubila je sledece. Da li kada se promeni PK vrednost za svaki ubacen red automatski se menja vrednost u FK. Jeli tako?
28.12.2006. u 13:01 

357_97

Član broj: 53056
Poruke: 46
*.eunet.yu.



Profil

icon Re: Povezivanje dve tabele pomocu foreign keys...Pomoc28.12.2006. u 21:52
Citat:
djovan01: Jos jedno pitanje. Ja mislim da razumem koncept kod FK ono sto sam do sada procitala kaze da je FK polje koje povezuje dve tabele i FK u tabeli2 prestavlja PK u tabeli1 e sada oko cega sam se ja pogubila je sledece. Da li kada se promeni PK vrednost za svaki ubacen red automatski se menja vrednost u FK. Jeli tako?


Izgleda da nisi bas razumela sustinu FK-a... Pogledaj ovde, valjda ce ti to pomoci jer je clanak na srpskom jeziku!
28.12.2006. u 21:52 

[es] :: MySQL :: Povezivanje dve tabele pomocu foreign keys...Pomoc

[ Pregleda: 1100 | Odgovora: 11 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.