|
[ refa @ 27.05.2007. 23:13 ] @
| pozdrav ranije sam koristio ORACLE za kreiranje baza, no ovu radim pod mysqlom mislio sam da je sve isto ali sam se prevario ocito
mysql za windows 32 bit
5.0.41
create table drzava(
drzava_id smallint not null,
drzava_ime varchar(50),
constraint pk_kanton primary key (drzava_id)
);
Code:
create table kanton(
kanton_id smallint not null,
kanton_ime varchar(50),
drzava_id smallint not null,
constraint pk_kanton primary key(kanton_id),
constraint fk_kd foreign key(drzava_id) references drzava(drzava_id)
);
to su dvije tabele uspjesno se kreiraju.
unesem par vrijednosti u tableu drzava
npr
insert into drzava values(1,'srbija');
insert into drzava values(2,'bosna');
insert into drzava values(3,'hrvatska');
uspjesno sve
no kad unosim u tabelu kanton
npr
insert into kanton values (1,'vojvodina',1);
dobijem gresku
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'inset
into kanton values(1,'vojvodina',1)' at line 1
ne razumijem, fazon je ako koristim drugo ime u tabeli kanton za drzava_id onda radi
pitanje
jeli u mysql se ne moze koristiti isto ime kolona u razlicitim tabelama, a ako moze u cemu grijesim
Code:
create table drzava(
drzava_id smallint not null primary key,
drzava_ime varchar(50)
);
create table kanton(
kanton_id smallint not null primary key,
kanton_ime varchar(50),
drzava_id smallint not null references drzava(drzava_id)
);
ovakva sintaksa takodje radi i isto se desava kao i gore.
ako imate rjesenje oko ovoga super bi bilo jer glupost je ako imam strane kljuceve po tabelama da moram za svaku tabelu pamtiti drugo ime
ili pucati describe table
|
[ chachka @ 28.05.2007. 10:33 ] @
Ovo si poslao kao poruku o gresci:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'inset
into kanton values(1,'vojvodina',1)' at line 1
Umesto inset treba insert
[ refa @ 30.05.2007. 13:53 ] @
Code:
create table drzava(
drzava_id smallint not null primary key,
drzava_ime varchar(50)
);
create table kanton(
kanton_id smallint not null primary key,
kanton_ime varchar(50),
drzava_id smallint not null,
foreign key (drzava_id) references drzava(drzava_id)
);
create table lokacija(
lokacija_id integer primary key,
adresa varchar(50),
postanski_broj integer,
grad varchar(50),
kanton_id smallint,
foreign key (kanton_id) references kanton(kanton_id)
);
create table objekat(
objekat_id smallint primary key,
objekat_ime varchar(50),
lokacija_id integer,
manager_id smallint,
foreign key (lokacija_id) references lokacija(lokacija_id)
);
create table posao(
posao_id integer primary key,
posao_vrsta varchar(30) not null,
min_plata float,
max_plata float
);
create table radnici(
radnik_id integer not null primary key,
ime varchar(20) not null,
prezime varchar(30) not null,
mob varchar(20),
datum_zaposlenja date not null,
posao_id integer not null,
plata float,
lokacija_id integer not null,
manager_id smallint not null,
objekat_id smallint not null,
foreign key (posao_id) references posao(posao_id),
foreign key (lokacija_id) references lokacija(lokacija_id),
foreign key (manager_id) references radnici(radnici_id),
foreign key (objekat_id) references objekat(objekat_id)
);
zasto nece da kreira posljednju tabelu radnici ???
ERROR 1005 (HY000): Can't create table '.\refa\radnici.frm' (errno: 150)
[ chachka @ 30.05.2007. 19:08 ] @
references radnici(radnici_id),
treba radnik_id
[ refa @ 30.05.2007. 19:59 ] @
eee hvala ljudi
izivnite sto ne vidim te banalne greske
:)
premoren sam
[ refa @ 30.05.2007. 23:46 ] @
Code:
create table drzava(
drzava_id smallint not null primary key,
drzava_ime varchar(50)
);
create table kanton(
kanton_id smallint not null primary key,
kanton_ime varchar(50),
drzava_id smallint not null,
foreign key (drzava_id) references drzava(drzava_id)
);
create table lokacija(
lokacija_id integer primary key,
adresa varchar(50),
postanski_broj integer,
grad varchar(50),
kanton_id smallint,
foreign key (kanton_id) references kanton(kanton_id)
);
create table objekat(
objekat_id smallint primary key,
objekat_ime varchar(50),
lokacija_id integer,
manager_id smallint,
foreign key (lokacija_id) references lokacija(lokacija_id)
);
create table posao(
posao_id integer primary key,
posao_vrsta varchar(30) not null,
min_plata float,
max_plata float
);
create table radnici(
radnik_id integer not null primary key,
ime varchar(20) not null,
prezime varchar(30) not null,
mob varchar(20),
datum_zaposlenja date not null,
posao_id integer not null,
plata float,
lokacija_id integer not null,
manager_id smallint not null,
objekat_id smallint not null,
foreign key (posao_id) references posao(posao_id),
foreign key (lokacija_id) references lokacija(lokacija_id),
foreign key (objekat_id) references objekat(objekat_id),
foreign key (manager_id) references radnici(radnik_id)
);
ponovo nece da kreira tabelu radnici
ERROR 1005 (HY000): Can't create table '.\djudji\radnici.frm' (errno: 150)
sad je sintaxa ok sve je ok kako ovo da rijesim ???
[ Dejan Topalovic @ 31.05.2007. 08:14 ] @
Definisi pripadajuce primary keys kao NOT NULL polja:
Code: create table lokacija(
lokacija_id integer NOT NULL primary key,
adresa varchar(50),
postanski_broj integer,
grad varchar(50),
kanton_id smallint,
foreign key (kanton_id) references kanton(kanton_id)
);
create table objekat(
objekat_id smallint NOT NULL primary key,
objekat_ime varchar(50),
lokacija_id integer,
manager_id smallint,
foreign key (lokacija_id) references lokacija(lokacija_id)
);
create table posao(
posao_id integer NOT NULL primary key,
posao_vrsta varchar(30) not null,
min_plata float,
max_plata float
);
[ refa @ 31.05.2007. 11:26 ] @
nije to problem
ako izbacim strani kljuc
foreign key (manager_id) references radnici(radnik_id)
ako izbacim to liniju u tabeli radnici
kreira se tabela znaci nema veze s tim sto si upravo naveo, ova baza bez problema se kreira pod oraclom ali pod mysql- pravi probleme
i greska je upravo tu sto sam naveo izgleda da strani kljuc ne moze da pokazuje na primarni kljuc u istoj tabeli ???
[ chachka @ 31.05.2007. 14:14 ] @
manager_id ti je SMALLINT, a radnik_id je INTEGER. Usaglasi ih.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|