2

我遇到的一个问题是“类似系统”,例如类似facebook的系统。

我使用具有 myisam mysql 的外国托管站点制作程序。如您所知,myisam mysql 没有交易系统。所以它不能像外键一样设置键来呈现关系或设置引用完整性

我认为我制作的“类似系统”对于如何呈现以及如何设置参考完整性很重要。

例如,我制作了 A 内容,它有 3 个“喜欢”。如果内容被删除,喜欢的已经有的也必须被删除。

但是int myisam mysql系统是不可能的。因为 isam mysql 无法为表设置引用完整性系统

由于这些原因,我很后悔当初选择了 myisam mysql 系统。

即使我知道 Inno DB 可以解决这些问题,我还是花了很多时间在这个项目上。

那么如何为我的项目(Like system)或任何其他方法设置参考完整性系统来解决这种情况?

4

1 回答 1

0

如果您无法将数据库引擎更改为Innodb并想继续使用MyISAM,触发器将对您有用。

句法

CREATE TRIGGER trigger_name
BEFORE DELETE
  ON table_name FOR EACH ROW

BEGIN

  -- variable declarations

  -- trigger code

END;

例子

DELIMITER //

CREATE TRIGGER delete_likes
BEFORE DELETE
  ON tbl_content FOR EACH ROW

BEGIN

  DELETE FROM tbl_likes WHERE content_id = OLD.id;

END; //

DELIMITER ;

假设您有 2 个名为tbl_content和的表tbl_likes。列content_idintbl_likes是对id列 in的引用tbl_content

名为的示例触发器delete_likes将在删除行之前触发tbl_content,并将删除相关的行tbl_likes

于 2015-11-06T10:36:38.407 回答