Witam.
Mam w skrypcie tables.sql tak zdefiniowane tabele:
create table tab_user
(
user_id int AUTO_INCREMENT NOT NULL,-- PRIMARY KEY,
nick varchar(10) NOT NULL, -- to tez jako primary key?
avatar varchar(14),
skad varchar(10),
posty integer NOT NULL,
data_dolaczenia date NOT NULL,
imie varchar(12),
nazwisko varchar(12),
moderator tinyint(1) default false,
PRIMARY KEY(user_id, nick), -- ??????????????
INDEX(nick)
) TYPE = InnoDB;
create table tab_post
(
post_id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
nick varchar(10) NOT NULL,
posty integer NOT NULL, -- ilosc postow autora posta
data_posta date NOT NULL,
tresc_posta_sciezka varchar(20) primary key, -- sciezka do pliku z trescia posta
-- CONSTRAINT tab_post_nick_fk FOREIGN KEY (nick) REFERENCES tab_user(nick),
CONSTRAINT tab_post_posty_fk FOREIGN KEY (posty) REFERENCES tab_user(posty), -- ON UPDATE CASCADE
INDEX(data_posta)
) TYPE = InnoDB;
Po wpisaniu polecenia source d:/tables.sql; dodaje mi do bazy danych tabele tab_user natomiast przy drugiej sie wysypuje, wypisujac nastepujacy komunikat:
ERROR 1005 (HY000): Can't create table '.\forum\tab_post.frm' (errno: 150)
Jezeli natomiast zapisze ta druga tabele tak:
create table tab_post
(
post_id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
nick varchar(10) NOT NULL,
posty integer NOT NULL, -- ilosc postow autora posta
data_posta date NOT NULL,
tresc_posta_sciezka varchar(20) primary key, -- sciezka do pliku z trescia posta
CONSTRAINT tab_post_nick_fk FOREIGN KEY (nick) REFERENCES tab_user(nick),
-- CONSTRAINT tab_post_posty_fk FOREIGN KEY (posty) REFERENCES tab_user(posty), -- ON UPDATE CASCADE
INDEX(data_posta)
) TYPE = InnoDB;
to wszystko dziala bez zarzutu. Jednak potrzebowalbym oba te klucze glowne miec w tej tabeli, a przynajmniej ten drugi, wiec co jest nie tak i jak to poprawic?
Kolejna sprawa przedstawia sie nastepujaco:
Jako, ze to fragment bazy danych forum(programistycznego - ale to w sumie niewazne jakiego) to uzytkownicy maja licznik ilosci postow, ktore napisali. Ta ilosc postow jest tez w drugiej tabeli, ktora zamiescilem wiec: jak zrobic, zeby przy wypelnianiu tabeli tab_post, licznik w tabeli tab_user sie automatycznie zwiekszal? Da sie tak w ogóle?<zakladamy ze="ze" posty="posty" nie="nie" beda="beda" kasowane="kasowane">.
Ps. Sory za ewentualne zagmatwanie ale mecze sie z tym pare ladnych godzin i nic a do tego juz tak jakby pozno.
Pozdrawiam.