我遇到的一个问题是"类似系统",比如类似facebook的系统。
我使用国外托管网站myisam-mysql制作程序。正如您所知,myisam-mysql没有事务系统。因此它不能像外键一样设置密钥来呈现关系或设置参考完整性
我认为我所做的"像系统"是重要的,如何呈现和设置引用的完整性。
例如,我制作了A内容,它有3个"赞"。如果内容被删除,就像已经被删除了一样。
但是在myisam-mysql系统中这是不可能的。因为isam-mysql无法将引用完整性系统设置为表
出于这些原因,我很后悔第一步选择myisam-mysql系统。
尽管我知道inno DB可以解决这些问题,但我在这个项目上花了很多时间。
那么,我如何为我的项目设置引用完整性系统(Like系统)或任何其他方法来解决这种情况呢?
如果不能将数据库引擎更改为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 ;
假设您有两个名为tbl_content
和tbl_likes
的表。tbl_likes
中的列content_id
是对tbl_content
中的id
列的引用。
名为delete_likes
的示例触发器将在删除tbl_content
中的行之前被触发,并将从tbl_likes
中删除相关行。