php - 级联删除sql

标签 php mysql sql database html

我正在开发一个涉及数据库使用的小型网站,我将这两个表用于用户,在第一个表中我添加用户及其信息,在第二个表中我仅添加 user id course 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/

相关文章:

sql - 选择查询所需的性能

java - org.hibernate.SQLQuery 输出到对象

PHP 得到一个月后的约会

mySQL 计算我的属性列表

mysql - ASK MySQL 查询 SUM 不同表

mysql - LEFT JOIN 的效率

sql - 使用 IN (NULL) 查询 SQL Server 不起作用

php - PHP代码运行elasticsearch查询

php - 使用 AM/PM 将字符串转换为 mysql 日期时间

php - 3 sql inner joined tables,现在如何计算其中的总行数