Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Uparty FOREIGN KEY...
PKua
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.04.2013

Ostrzeżenie: (0%)
-----


Cześć!

Mam pewien problem z dodaniem klucza obcego. Mam trzy tabelki (wziąłem z SHOW CREATE TABLE):
  1. CREATE TABLE `notifications` (
  2. `notid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `uid` int(10) UNSIGNED NOT NULL,
  4. `type` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  5. `content` varchar(1024) COLLATE utf8_polish_ci NOT NULL,
  6. PRIMARY KEY (`notid`)
  7. ) ENGINE=InnoDB AUTO_INCREMENT=44 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci


  1. CREATE TABLE `songs` (
  2. `songid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `author` varchar(64) COLLATE utf8_polish_ci NOT NULL,
  4. `title` varchar(64) COLLATE utf8_polish_ci NOT NULL,
  5. `link` varchar(11) COLLATE utf8_polish_ci NOT NULL,
  6. `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  7. `allocation` tinyint(4) NOT NULL DEFAULT '0',
  8. `uid` int(11) NOT NULL,
  9. `status` int(11) NOT NULL DEFAULT '0',
  10. PRIMARY KEY (`songid`)
  11. ) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci


  1. CREATE TABLE `users` (
  2. `uid` int(11) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(128) COLLATE utf8_polish_ci NOT NULL,
  4. `pass` varchar(41) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL,
  5. `reg_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  6. `rank` tinyint(4) NOT NULL DEFAULT '0',
  7. `forum_respect` smallint(6) NOT NULL DEFAULT '0',
  8. `server_respect` int(10) NOT NULL DEFAULT '0',
  9. PRIMARY KEY (`uid`),
  10. UNIQUE KEY `login` (`login`)
  11. ) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci


I teraz chciałem dodać klucz obcy do notifications, żeby przy usuwaniu użytkownika kasowało także jego powiadomienia. Robię tak:
  1. ALTER TABLE notifications
  2. ADD FOREIGN KEY (uid)
  3. REFERENCES users(uid)
  4. ON DELETE CASCADE
  5. ON UPDATE CASCADE


i wywala:
Kod
#1005 - Can't create table 'www.#sql-135c_140' (errno: 150)


To samo jak dam:
  1. ALTER TABLE notifications
  2. ADD CONSTRAINT fk_not_uid
  3. FOREIGN KEY (uid)
  4. REFERENCES users(uid)
  5. ON DELETE CASCADE
  6. ON UPDATE CASCADE


Próbowałem zrobić zrzut z bazy, usunąłem ją, utworzyłem ponownie, ale dalej tak samo.

Ma ktoś jakiś pomysł?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
matiit
post
Post #2





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

Ostrzeżenie: (0%)
-----


Mas różne typy kluczów głównych
Go to the top of the page
+Quote Post
PKua
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 28.04.2013

Ostrzeżenie: (0%)
-----


Racja, przecież w powiadomieniach jest UNSIGNED a w użytkownikach nie facepalmxd.gif . Dzięki wielkie... A powie ktoś pokrótce o co chodzi z tym CONSTRAINT? Na czym to polega?

Ten post edytował PKua 28.04.2013, 18:14:06
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 11:04