каскадное удаление

IgorCH

Новичок
каскадное удаление

Почему не работает каскадное удаление по полю id_sec
Apache/1.3.33 (Win32) PHP/4.4.0
PHP:
 CREATE TABLE `photo_sec` (
  `id_sec` bigint(20) NOT NULL auto_increment,
  `data` datetime NOT NULL default '0000-00-00 00:00:00',
  `sec_name` varchar(200) NOT NULL default '',
  `sec_text` varchar(250) NOT NULL default '',
  `status` enum('OFF','ON') NOT NULL default 'OFF',
  PRIMARY KEY  (`id_sec`),
  UNIQUE KEY `id_sec` (`id_sec`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=6 ;


CREATE TABLE `photo_kat` (
  `id_kat` bigint(20) NOT NULL auto_increment,
  `data` datetime NOT NULL default '0000-00-00 00:00:00',
  `name` varchar(200) NOT NULL default '',
  `text` varchar(250) NOT NULL default '',
  `status` enum('OFF','ON') NOT NULL default 'OFF',
  `komment` enum('OFF','ON') NOT NULL default 'OFF',
  `id_sec` int(11) NOT NULL default '0' REFERENCES photo_sec(id_sec) ON DELETE CASCADE,
  PRIMARY KEY  (`id_kat`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=41 ;
 

vovik

Новичок
Очень просто. MyISAM не поддерживает FK. Чтобы работало - обе таблицы, между которыми делается связь, должны быть InnoDB.

В данном же случае MyISAM полностью игнорирует FK, что легко увидеть, написав "show create table photo_kat" - FK там не будет.
 

IgorCH

Новичок
А изменитьт тип таблицы я теперь не могу? например через phpMyAdmin, надо создаватьт заново?

phpMyAdmin есто только:
Berkeley DB
Heap
Merge
 

svetasmirnova

маленький монстрик
>на хостинге есть
Это хорошо, а то на некоторых контрактах отключают.
Читай про ALTER TABLE
 
Сверху