Novo

Forum kao aplikacija na telefonu

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

Povezivanje dve tabele pomocu foreign keys...Pomoc

  • 11 odgovora
  • 5.778 pregleda

Najnovija ↓

Povezivanje dve tabele pomocu foreign keys...Pomoc 26.12.2006. u 20:28 · pre 241 mesec #1
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));




Re: Povezivanje dve tabele pomocu foreign keys...Pomoc 26.12.2006. u 23:07 · pre 241 mesec #4
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!
Re: Povezivanje dve tabele pomocu foreign keys...Pomoc 27.12.2006. u 14:13 · pre 241 mesec #5
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 ?
Re: Povezivanje dve tabele pomocu foreign keys...Pomoc 27.12.2006. u 16:49 · pre 241 mesec #6
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 :)
Re: Povezivanje dve tabele pomocu foreign keys...Pomoc 27.12.2006. u 17:48 · pre 241 mesec #7
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?
Re: Povezivanje dve tabele pomocu foreign keys...Pomoc 27.12.2006. u 21:32 · pre 241 mesec #8
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!
Re: Povezivanje dve tabele pomocu foreign keys...Pomoc 27.12.2006. u 21:57 · pre 241 mesec #9
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
Re: Povezivanje dve tabele pomocu foreign keys...Pomoc 27.12.2006. u 22:08 · pre 241 mesec #10
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
Re: Povezivanje dve tabele pomocu foreign keys...Pomoc 28.12.2006. u 14:01 · pre 241 mesec #11
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?
Re: Povezivanje dve tabele pomocu foreign keys...Pomoc 28.12.2006. u 22:52 · pre 241 mesec #12
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!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme