这个问题已经有了答案:
MySQL foreign key constraints, cascade delete
3个答案
我在一个涉及数据库使用的小网站上工作,我使用这两个表给用户,在第一个表中我添加用户和他的信息,在第二个表中我只添加user idcourse id
我的问题是如何将cascade on delete添加到哪个表中?

CREATE TABLE IF NOT EXISTS `students` (
  `studentid` int(11) NOT NULL AUTO_INCREMENT,
  `fname` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `lname` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
  `studentcode` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `courseid` int(11) NOT NULL,
  PRIMARY KEY (`studentid`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=27 ;

CREATE TABLE IF NOT EXISTS `idtables` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `courseid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `studentid` char(64) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=43 ;

最佳答案

您需要在FOREIGN KEY约束中定义此行为,如:

CREATE TABLE IF NOT EXISTS `idtables` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `courseid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `studentid` char(64) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  FOREIGN KEY fk_students_id (studentid)
    REFERENCES students (id)
    ON DELETE CASCADE
    ON UPDATE CASCADE
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=43 ;

关于php - 级联删除sql ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23941393/

10-12 12:46